DataTable に次の Sql クエリを適用したい
SELECT MakeDistinct AS AfterDistinct
, COUNT(MakeDistinct) AS Count
FROM MyTable
GROUP BY MakeDistinct
詳細については、この質問を参照してください
何かのようなもの:
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
。
を部分的に探していDataTable.Compute
ます。そのメソッドは、集計関数を計算できます。したがって、次のようなものが得られます。
object sumObject;
sumObject = myDataTable.Compute("Sum(Count)", ""); // second parameter is the where clause
列によるグループ化については、この質問を参照してください: Efficient DataTable Group By。これは、Linq 実装と「非 Linq」実装を提供します。
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()
};