Linq数据表可以获得唯一的行和它们的计数

时间:2013-11-08 20:44:53

标签: linq datatable

我有数据表,如:

国家

中国 印度 泰国 印度 中国 中国 泰国 香港 印度

可以使用LINQ

获取如下所示的输出

国家计数 印度3 中国2 泰国2 香港1

1 个答案:

答案 0 :(得分:0)

正如Ben Allred指出的那样,你可能正在寻找的是LINQ GroupBy方法。

使用查询语法,它可能如下所示:

    var query = from tuple in table
                group tuple by tuple.Country into g
                select new { Country = g.Key, Count = g.Count() };

query现在包含一个IEnumerable匿名对象集合,其成员为字符串Country,整数Count表示该表中该国家/地区的出现次数。

您现在可以当然迭代这些对象:

     foreach (var item in query)
     {
         Console.WriteLine("Country : {0} - Count : {1}", item.Country, item.Count);
     }

有关更多示例,我强烈建议101 LINQ Samples

如果您之前没有使用LINQ,那么处理延迟也是值得指出的,这意味着在您尝试访问其任何项目之前,query对象上的迭代不会发生,例如,在foreach声明中。如果从table收集或读取的内容非常昂贵且您打算多次使用查询结果,则可以在ToList()上调用query以返回更具体,具体的集合。