-1

我有如下数据表:

国家

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

可以使用 LINQ 获得如下所示的输出

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

4

1 回答 1

0

正如 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 集合,该集合具有作为成员的字符串CountryCount表示该国家在表中出现次数的整数。

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

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

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

还值得指出的是,如果您在处理被延迟之前没有使用过 LINQ,这意味着直到您尝试访问它的任何项目(例如,在语句query中)才会对对象进行迭代。foreach如果集合或读取table的成本很高,并且您打算多次使用查询结果,则可以调用ToList()query返回更具体、更具体的集合。

于 2013-11-08T22:22:10.543 回答