int id = 2; //抽出条件
1.標準クエリ演算子のパターン
int total = hogeDataSet.HogeDataTable.AsEnumerable()
.Where( r => r.Field<int>(hogeDataSet.HogeDataTable.IDColumn == id) )
.Sum( s => s.Field<int>(hogeDataSet.HogeDataTable.KingakuColumn) );
2.クエリ式のパターン
var drk = from dr in hogeDataSet.HogeDataTable.AsEnumerable()
where dr.ID == id
select new
{
kin = dr.Field<int>(hogeDataSet.HogeDataTable.KingakuColumn),
id = dr.Field<int>(hogeDataSet.HogeDataTable.IDColumn)
} into s
group s.kin by s.id into grp
select grp.Sum(_ => _);
int total = drk.FirstOrDefault<int>()
1の標準クエリ演算子を使う方は簡単なんですが、2のクエリ式を使うパターンで悩んだ。
selectもgroupもintoを使わないとそこで終ってしまうので、SQL文のようにselectとgroupを一度に書くことはできないんじゃないかと思う。
よって、SQL文に比べるとかなりやぼったくなるけど、しょうがないのかな・・・