我有如下数据表:
国家
中国 印度 泰国 印度 中国 中国 泰国 香港 印度
可以使用 LINQ 获得如下所示的输出
国家 计数 印度 3 中国 2 泰国 2 香港 1
正如 Ben Allred 所指出的,您可能正在寻找的是 LINQGroupBy
方法。
使用查询语法,它可能看起来像这样:
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
返回更具体、更具体的集合。