我有一个包含一列(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
答案 0 :(得分:3)
使用AsEnumerable
和DataRow
上的一些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() });