如何从linq查询中获取值

时间:2015-04-07 20:33:16

标签: c# linq

我有以下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。

2 个答案:

答案 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