我有数据表,如:
国家
中国 印度 泰国 印度 中国 中国 泰国 香港 印度
可以使用LINQ
获取如下所示的输出国家计数 印度3 中国2 泰国2 香港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
以返回更具体,具体的集合。