var listOfDuplicates = gridDatatable.AsEnumerable().
GroupBy(item => item.Field<int>(Fields.GLAccountKey.Name),item => item.Field<string>(Fields.GLAccountNumber.Name))
.Where(grouping => grouping.Count() > 1).ToList();
如果我想在GroupBy中添加一个分组()如上所述我需要item =&gt;再次。 为什么不能像First()中那样“重用”项目? 此外,似乎当我使用第二个分组时,每个组的元素将仅显示这两个字段,与使用唯一一个分组相比,当我可以在元素中看到表中的所有字段时。 只是想更好地了解GroupBy()。 谢谢!
答案 0 :(得分:0)
我认为这就是你想要的:
var listOfDuplicates = gridDatatable.AsEnumerable()
.GroupBy(a => new{
KeyName = a.Field<int>(Fields.GLAccountKey.Name)
, NumberName = a.Field<string>(Fields.GLAccountNumber.Name)
}
)
.Where(grouping => grouping.Count() > 1)
.Select(grouping => grouping.Select(a => a))
.ToList();
您可以使用anonymous type
对所需数量的字段进行分组。在组上调用Select
可以访问其项目及其所有字段。上面,只需返回a
,查询将返回所有字段。
答案 1 :(得分:0)
var myListOfDuplicates = gridDatatable.AsEnumerable()
.GroupBy(item => new{Field = item.Field<int>(Fields.GLAccountKey.Name), S = item.Field<string>(Fields.GLAccountNumber.Name)})
.Where(grouping => grouping.Count() > 1)
.Select(grouping => grouping.Select(a => a))
.ToList();
需要添加显式名称以避免“匿名类型投影应该是样本名称或成员访问表达式”。你能没有明确的名字吗?