我有以下linq查询:
var dups = from row in DataTableFromObject.AsEnumerable()
let maintx = row["Main Tx Number"].ToString()
group row by maintx
into DupMainTx
where DupMainTx.Count() > 1
select DupMainTx;
当我在dup上添加一个监视,然后打开ResultsView时,我将看到条目[0]到[3],对于具有重复条目的四行中的每一行。如果我展开[0],我会看到Key的值,这是我想要的值。如何访问每行的键值,这将是在选择DupMainTx中选择的值? 感谢您的帮助 - 尝试自学linq。
答案 0 :(得分:1)
dups
将是一组分组,每个分组都有一个Key
属性,可以枚举:
foreach(var group in dups)
{
// output the group key
Console.WriteLine(group.Key);
// enumerate the items in the group
foreach(var row in group)
{
Console.WriteLine(row[{field}]);
}
}
答案 1 :(得分:0)
您可以通过将new{}
添加到select
声明中来获取关键和相应的计数。
替换:
select DupMainTx
使用:
select new
{
dup = DupMainTx.Key,
cnt = DupMainTx.Count(),
};
有关详细信息,请参阅:
https://msdn.microsoft.com/en-us/library/system.linq.enumerable.groupby%28v=vs.90%29.aspx
https://msdn.microsoft.com/en-us/library/bb545971.aspx
https://code.msdn.microsoft.com/LINQ-to-DataSets-Grouping-c62703ea