【发布时间】:2013-07-03 14:18:59
【问题描述】:
我有,
带有字段的对象列表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 数。如何解决这个问题?
【问题讨论】:
-
要注意的关键是您并没有真正计算 B,您只是在计算(例如,在 SQL 中
count(1)也可以工作)。这就是为什么您的答案直观地不起作用的原因。 NinjaNye 似乎已经确定了解决方案。 :)