20

我有,

具有字段的对象列表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 数。如何解决这个问题?

4

1 回答 1

54

试试这个......(在我的头顶)

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()});
于 2013-07-03T14:24:46.773 回答