2012-03-06 60 views
-1

我們如何通過給定列的值來計算行數?按IEnumerable計數的組元素

  • 我創建從數據表中的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  | 
    
  • 現在我想通過列1獲得的行數與組。所以,我的結果應該是

    Count | Column | 
         2 | xCol1 | 
         1 | xCol2 | 
    
+0

可能重複[Howto:從IEnumerable 中計算項目而沒有迭代?](http://stackoverflow.com/questions/168901/howto-count-the-items-from-a-ienumerablet-without -iterating ) – ChrisF 2012-03-06 15:32:30

+1

我認爲你問這個問題一樣的東西... http://stackoverflow.com/questions/1225710/linq-to-dataset-multiple-group-by-on-a-data-table – 2012-03-06 15:35:16

+0

謝謝克里斯託弗。你是對的。我正在尋找你建議的相同的東西 – 2012-03-06 15:43:32

回答

0

有幾個方法可以做到這一點:

  1. 遍歷IEnumerable收集和計算的元素。
  2. 如果您不想迭代,請使用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?

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}); 

我還沒有嘗試過。但是這樣的事情。