我有,
包含字段的对象列表MyList
:
string A;
string B;
从概念上讲,这类似于带有列A,B的两列SQL表。
我正在尝试创建一个linq表达式,它将在这样一个概念表上生成此T-SQL的三列结果集:
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的数量。如何解决这个问题?
答案 0 :(得分:42)
试试这个......(脱离我的头顶)
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()});