使用linq计算DataTable中每个列值的出现次数

时间:2015-05-09 11:02:52

标签: c# linq datatable count group-by

我有一个数据表,其中包含一组属性,例如(天气,风,等等)

我想计算每列或属性中每个值的出现次数。

这是我的DataTable:

input

输出类似于:

Weather:
   sunny : 120

   cloudy : 200

   rainy : 300
Wind:
   slight : 200

   strong : 120

我不知道从哪里开始,任何想法都可以挽救我的一天

谢谢

1 个答案:

答案 0 :(得分:2)

这很容易。

这个将创建一个包含属性KeyCount

的匿名对象数组
// Add to the project a reference to System.Data.DataSetExtensions.dll
// Add a "using System.Data" to the cs file

// dt is your DataTable

var res = (from x in dt.AsEnumerable()
           group x by (string)x["Weather"] into y
           select new { Key = y.Key, Count = y.Count() }).ToArray();

这个将创建一个包含相同数据的Tuple<string, int>数组。

var res2 = (from x in dt.AsEnumerable()
            group x by (string)x["Weather"] into y
            select Tuple.Create(y.Key, y.Count())).ToArray();

请记得阅读评论!

显然,你必须为每一栏重复一切。