2013-05-15 39 views
2

SQL聚合函數我想在應用follwing SQL查詢我的DataTable我如何可以使用C#的DataTable

SELECT MakeDistinct AS AfterDistinct 
     , COUNT(MakeDistinct) AS Count 
    FROM MyTable 
GROUP BY MakeDistinct 

請參閱本Question瞭解更多詳情

+0

那麼,是什麼問題? – Alex

+0

請顯示一些源代碼...你有什麼試過?問題是什麼 ? – Yahia

+0

您不能......只是在鏈接的問題接受的答案中運行查詢並將其保存到另一個數據表中,或者在您現有的數據表中循環以進行計數,最終使用rowfilter屬性... –

回答

3

類似:

var query = from row in table.AsEnumerable() 
      group row by row.Field<int>("MakeDistinct") into grp 
      select new {AfterDistinct = grp.Key, Count = grp.Count()}; 

foreach(var row in query) { 
    Console.WriteLine("{0}: {1}", row.AfterDistinct, row.Count); 
} 

注意,在數據庫服務器聚合通常比在網絡上填充一個DataTable,然後聚集DataTable更加高效。

0

您是部分尋找DataTable.Compute。該方法可以爲您計算聚合函數。所以,你喜歡的東西:按列

object sumObject; 
sumObject = myDataTable.Compute("Sum(Count)", ""); // second parameter is the where clause 

對於分組,看到了這個問題:Efficient DataTable Group By。它提供了一個Linq實現以及一個「非Linq」實現。

0

使用System.Data.DataSetExtensions和嘗試這樣的事情

var result = from row in dt.AsEnumerable() 
       group row by row.Field<int>("MakeDistinct") into grp 
       select new 
       { 
        MakeDistinct = grp.Key, 
        Count = grp.Count() 
       }; 
相關問題