Самый простой способ сделать это, вероятно, с помощью LINQ (IMO, в любом случае):
var groups = table.AsEnumerable()
.GroupBy(x => x.Field<string>("Name"))
.Select(g => new { Name = g.Key, Count = g.Count() });
Предполагается, что у вас действительно есть данные в DataTable
. Если он все еще находится в базе данных, вы можете использовать аналогичный запрос LINQ to SQL:
var groups = dataContext.GroupBy(x => x.Name)
.Select(g => new { Name = g.Key, Count = g.Count() });
На самом деле вы можете использовать перегрузку GroupBy
, чтобы сделать все это одним вызовом метода:
var groups = dataContext.GroupBy(x => x.Name,
(key, group) => new { Name = key,
Count = group.Count() });