我有,
MyList包含字段的对象的列表:
string A;
string B;
Run Code Online (Sandbox Code Playgroud)
从概念上讲,这类似于带有列A,B的两列SQL表.
我正在尝试创建一个linq表达式,它将在这样一个概念表上生成此T-SQL的三列结果集:
SELECT A, B, COUNT(B)
FROM T1
GROUP BY A, B
Run Code Online (Sandbox Code Playgroud)
也就是说,如果我有一个表,如:
A B
----------
x g
x g
x g
x s
y g
y g
Run Code Online (Sandbox Code Playgroud)
我希望:
A B COUNT(B)
-------------------------
x g 3
x s 1
y g 2
Run Code Online (Sandbox Code Playgroud)
我最大的努力是这样的:
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() }
Run Code Online (Sandbox Code Playgroud)
但是计数似乎返回B的总数而不是每个多列组的B的数量.怎么解决这个问题?
Nin*_*Nye 43
试试这个....(我的头顶)
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() }
Run Code Online (Sandbox Code Playgroud)
或者如果您愿意......
var result = MyList.GroupBy(x => new {x.A, x.B})
.Select(g => new {g.Key.A, g.Key.B, MyCount = g.Count()});
Run Code Online (Sandbox Code Playgroud)