hnd*_*ndr 2 c# entity-framework count linq-group
我有一张大致如下所示的表:
Date | Category | Name
01/02/2014 | A | Foo
01/02/2014 | B | Bar
02/02/2014 | A | Baz
02/02/2014 | A | Bla
Run Code Online (Sandbox Code Playgroud)
我正在尝试构建一个生成如下内容的查询:
Date | CategoryACount | CategoryBCount
01/02/2014 | 1 | 1
02/02/2014 | 2 | 0
Run Code Online (Sandbox Code Playgroud)
我目前有一个存储过程,它循环遍历日期并通过逐个查询数据来创建一个临时表,我们计划将所有应用程序逻辑移出存储过程。
如何在 EF 中生成此查询?
如果你的桌子看起来像这样
public class Table
{
public DateTime Date { get; set; }
public string Category { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你可以使用这样的 qry:
db.Table.GroupBy(c => c.Date)
.Select(c => new
{
Date = c.Key,
CatA = c.Where(q => q.Category == "A").Count(),
CatB = c.Where(q => q.Category == "B").Count(),
})
Run Code Online (Sandbox Code Playgroud)
要测试它 - 使用 LinqPad 并运行:
var lst = new List<Table>();
lst.Add(new Table(){Date = new DateTime(2014,2,1),Category = "A"});
lst.Add(new Table(){Date = new DateTime(2014,2,1),Category = "B"});
lst.Add(new Table(){Date = new DateTime(2014,2,2),Category = "A"});
lst.Add(new Table(){Date = new DateTime(2014,2,2),Category = "A"});
lst.GroupBy(c => c.Date)
.Select(c => new {
Date = c.Key,
CatA = c.Where(q => q.Category == "A").Count(),
CatB = c.Where(q => q.Category == "B").Count(),
})
.Dump();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1253 次 |
最近记录: |