gpt4 book ai didi

c# - 如何在 EF 中选择按日期分组的多个计数

转载 作者:行者123 更新时间:2023-11-30 20:47:28 26 4
gpt4 key购买 nike

我有一个大致如下所示的表格:

Date        | Category  | Name
01/02/2014 | A | Foo
01/02/2014 | B | Bar
02/02/2014 | A | Baz
02/02/2014 | A | Bla

我正在尝试构建一个生成如下内容的查询:

Date        | CategoryACount | CategoryBCount
01/02/2014 | 1 | 1
02/02/2014 | 2 | 0

我目前有循环遍历日期并通过逐个查询数据创建临时表的存储过程,我们计划将所有应用程序逻辑移出存储过程。

如何在 EF 中生成此查询?

最佳答案

如果你的表是这样的

public class Table
{
public DateTime Date { get; set; }
public string Category { get; set; }
public string Name { get; set; }
}

你可以像这样使用 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(),
})

要测试它 - 使用 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();

enter image description here

关于c# - 如何在 EF 中选择按日期分组的多个计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25779759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com