私は持っている、
MyList
フィールドを持つオブジェクトのリスト、 :
string A;
string B;
概念的には、これは列 A と列 B を持つ 2 列の SQL テーブルに似ています。
私は、このような概念テーブルでこの T-SQL の 3 列の結果セットを生成する linq 式を作成しようとしています。
SELECT A, B, COUNT(B)
FROM T1
GROUP BY A, B
つまり、次のような表があったとします。
A B
----------
x g
x g
x g
x s
y g
y g
私は次のように予想します:
A B COUNT(B)
-------------------------
x g 3
x s 1
y g 2
私の最善の努力は次の通りです:
var result = from MyObjs in MyList
group MyObjs by new { MyObjs.A, MyObjs.B } into g
select new { g.Key.A, g.Key.B, g.Key.B.Count() }
しかし、カウントは、複数の列グループごとの B の数ではなく、B の合計数を返すようです。これを修正するにはどうすればよいでしょうか?
ベストアンサー1
これを試してみてください....(思いついたまま)
var result = from MyObjs in MyList
group MyObjs by new { MyObjs.A, MyObjs.B } into g
select new { g.Key.A, g.Key.B, MyCount = g.Count() }
または、お好みで...
var result = MyList.GroupBy(x => new {x.A, x.B})
.Select(g => new {g.Key.A, g.Key.B, MyCount = g.Count()});