2016-11-23 62 views
1

特定のDataTableからDataTable(C#)で集計関数をグループ化して計算する方法

Val1  Val2  Col1  Col2 
10  100  A  B 
20  200  A  B 
30  300  C  C 
40  400  C  C 

私は、次のSQL文などで集計関数とグループと別のデータテーブルを作成したいと思います:

SELECT MIN(Val1), MAX(Val2), AVG(Val1), AVG(Val2), StdDev(Val1) From DataTable GROUP BY Col1, Col2 

STDDEVは、私はおそらく自分自身を開発するために必要な機能であることに注意してください、Max、Min、AverageはLinqに既に存在しています

C#での処理方法は? Linqでも可能ですか? これを可能にする拡張子/ライブラリをご存知ですか?

私は他の質問をしていましたが、通常、最小値(集計関数ではなく、注文後に最初の値を選択する)を選択するか、グループ化に集中します。とき投票ダウンのコメントを残して -

+0

@Downvoterのようなものを試してみてください! –

答えて

1

この

var groupedData = from row in dataTable.AsEnumerable() 
       group row by new {Col1=row["Col1"].ToString(), Col2=row["Col2"].ToString()} into g 
       select new 
       { 
        Col1 = g.Key.Col1, 
        Col2 = g.Key.Col2, 
        MinVal1 = g.Min(x => x.Field<decimal>("Val1")), 
        MaxVal2 = g.Max(x => x.Field<decimal>("Val2")), 
        MinVal1 = g.Min(x => x.Field<decimal>("Val1")), 
        AvgVal1 = g.Average(x => x.Field<decimal>("Val1")), 
        AvgVal2 = g.Average(x => x.Field<decimal>("Val2")) 

       }; 

foreach (var group in groupedData) 
{ 

} 
関連する問題