cho*_*bo2 4 c# linq linq-to-sql
我有这样的数据
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
Run Code Online (Sandbox Code Playgroud)
我想通过绑定来分组我的数据.我不知道该怎么做.我必须做一个新的选择吗?
到目前为止,我有这个
Db.Table.Where(u => u.UserId == userId && u.Binding == binding)
.GroupBy(u => u.Binding)
Run Code Online (Sandbox Code Playgroud)
所以我想返回所有列.我必须去吗
.select(group = new Table {....});
Run Code Online (Sandbox Code Playgroud)
请记住,Linq的GroupBy与SQL的GroupBy不同.Linq的GroupBy返回一个.Key(这是你的组的条件是什么),然后是一个IEnumerable <>你正在分组的任何东西.因此,如果您希望计算每个绑定的所有行以及绑定本身,那么它将是:
var bindingsAndCounts =
Db.Table.Where(u => u.UserId == userId && u.Binding == binding)
.GroupBy(u => u.Binding)
.Select(g => new {g.Key, BindingCount = g.Count()});
Run Code Online (Sandbox Code Playgroud)
这是一个构造比使用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 ...);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |