我们如何通过给定列的值获取行数?
我正在从存储过程返回的数据表中创建IEnumerable
DataSet ds = new DataSet();
// code to get table using sp
IEnumerable<DataRow> Myrows = ds.Tables[0].AsEnumerable();
我的表返回类似
的数据 Id | Column1 | Column2 | Column3 |
1 | xCol1 | xCol2 | xCol3 |
2 | xCol1 | xyy | ser |
3 | xCol2 | 2324 | ser |
现在我想通过Column1获取group的行数。所以我的结果应该是
Count | Column |
2 | xCol1 |
1 | xCol2 |
答案 0 :(得分:0)
有几种方法可以做到这一点:
IEnumerable
集合并计算元素。Myrows.ToList().Count
,这将创建IEnumerable
集合中的列表,并获取列表的Count
属性。您可以使用linq来执行分组并从那里获取计数。这是一个例子:
var groups =
from row in rows
group rows by row.Column;
foreach (var group in groups)
Console.WriteLine("key: {0} count: {1}",
group.Key, group.Count());
另请参阅此问题以获取更多信息:Howto: Count the items from a IEnumerable without iterating?
答案 1 :(得分:0)
DataSet ds = new DataSet();
// code to get table using sp
var grouped = ds.Tables[0].AsEnumerable().GroupBy(q=>q.Table.Columns["column1"]).Select(q=> new{Count = q.Count(), Column = q});
我没试过。但是那样的事情。