複数グループの列カウントLinq質問する

複数グループの列カウントLinq質問する

私は持っている、

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()});

おすすめ記事