我有这样的数据
id = 1<pk>
SDate = 12/12/2009
EDate = 12/12/2009
binding = a_1
userid = 14
id = 2<pk>
SDate = 12/12/2009
EDate = 12/12/2009
binding = a_1
userid = 14
我想通过绑定对数据进行分组。我不知道该怎么做。我必须做一个新的选择吗?
到目前为止,我有这个 Db.Table.Where(u => u.UserId == userId && u.Binding == binding)
.GroupBy(u => u.Binding)
所以我想返回所有列。我必须去吗
.select(group = new Table {....});
答案 0 :(得分:5)
请记住,Linq的GroupBy与SQL的GroupBy不同。 Linq的GroupBy返回一个.Key(这是你的组的条件是什么),然后是一个IEnumerable&lt;&gt;无论你在分组什么。因此,如果您希望计算每个绑定的所有行以及绑定本身,那么它将是:
var bindingsAndCounts =
Db.Table.Where(u => u.UserId == userId && u.Binding == binding)
.GroupBy(u => u.Binding)
.Select(g => new {g.Key, BindingCount = g.Count()});
这对于构造而言比使用SQL要强大得多,因为你可以在表达式中使用“g”做任何事情。
如果要枚举每个组,可以省略select:
foreach (var group in whateveryourgroupingExpressionWas) {
Console.WriteLine(group.Key);
foreach (var row in group) {
Console.WriteLine("ID: " + row.Id + "Name " + row.Name ...);
}
}