如何计算值/值在数据表中出现的次数

时间:2016-05-11 18:09:19

标签: c# datatable

我有一个包含一列(Column A)的DataTable:

Column A
GOOD
NOT GOOD
GOOD
PERFECT
PERFECT
GOOD

DataTable结果可能与上面的结果不同,所以我不能使用静态值。

如何遍历列,以便计算列中每行有多少相同的值重复。

这样的事情:

Good = 3
NOT GOOD = 1
PERFECT = 2

另一个例子:

Column A
DO IT
DON'T DO IT
DON'T DO IT
DON'T DO IT
DO IT
DO IT

结果将是:

DO IT = 3
DON'T DO IT = 3

2 个答案:

答案 0 :(得分:3)

使用AsEnumerableDataRow上的一些LINQ按项目值对项目进行分组,并获取计数:

var dt = new DataTable();
dt.Columns.Add("A");
dt.Rows.Add("GOOD");
dt.Rows.Add("NOT GOOD");
dt.Rows.Add("GOOD");
dt.Rows.Add("PERFECT");
dt.Rows.Add("PERFECT");
dt.Rows.Add("GOOD");

var result = dt.AsEnumerable()
               .GroupBy(r => r.Field<string>("A"))
               .Select(r => new
                            {
                               Str = r.Key,
                               Count = r.Count()
                            });

foreach (var item in result)
{
    Console.WriteLine($"{item.Str} : {item.Count}");
}
  

好的:3

     

不好:1

     

完美:2

我正在根据每行的“A”列值创建组,然后获取字符串值和计数。

答案 1 :(得分:2)

您可以使用linq对数据表中的列进行分组:

  var groups = dt.AsEnumerable()
                .GroupBy(r => r.Field<ColumnType>("columnName"), 
                (row, g) => new { Column = row, count = g.Count() });