gpt4 book ai didi

LINQ to DataSet 不区分大小写的分组依据

转载 作者:行者123 更新时间:2023-12-04 01:35:56 25 4
gpt4 key购买 nike

我有一个数据表,我想通过一列数据表(比如 Column1 类型的字符串)执行不区分大小写的组。我观察到通常 LINQ to DataSet 执行区分大小写的比较。例如,如果 Column1应用 group by 后,有两个字符串值“Test”和“test”它返回两个单独的行,其值为“Test”和“test”,而不是一个。

查询是:

var countGroupQuery = from table in dataTable.AsEnumerable()
group table by table.Field<string>(Column1) into groupedTable
select new
{
value = groupedTable.Key,
count = groupedTable.Count()
};

是否有任何方法可以执行不区分大小写的 group by所以在上面的例子中我只得到一行一个值(“测试”或“测试”)? ToUpperToLower实际上会将值更改为大写或小写而不是使用至少一个输入值,所以我不想使用这个:
group table by table.Field<string>(Column1).ToUpper() into groupedTable

最佳答案

您不能通过查询表达式执行此操作,但可以使用点表示法执行此操作:

var query = dataTable.AsEnumerable()
.GroupBy(x => table.Field<string>(Column1),
StringComparer.InvariantCultureIgnoreCase)
.Select(groupedTable => new
{
value = groupedTable.Key,
count = groupedTable.Count()
});

您甚至可以使用更复杂的重载 GroupBy一次调用即可完成:
var query = dataTable.AsEnumerable()
.GroupBy(x => table.Field<string>(Column1),
(key, group) => { value = key,
count = group.Count() },
StringComparer.InvariantCultureIgnoreCase));

显然,这是使用不变文化 - 您也可以使用当前文化或序数规则。

关于LINQ to DataSet 不区分大小写的分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1490988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com