我有一个sql表,其中包含许多用于唯一ID的成本条目。
这是表格的简化版本:
Table:
{
public int Id {get;set;}
public DateTime date {get;set;}
public int Cost {get;set;}
}
我需要构建一个EF查询来执行以下操作:
select from the table where x.date.Date = DateTime.Now.date && SUM(x.cost) > 100.00)
and it should group by x.Id
答案 0 :(得分:2)
你需要做几件事。对于数据,获取起始结束时间并执行日期范围比尝试仅获取日期组件更简单。其次,只需应用第二个Where
来过滤SUM() > 100
:
var dateToCheck = DateTime.Now;
var start = dateToCheck.Date;
var end = dateToCheck.AddDays(1).Date;
var data = tables
.Where(t => t.date >= start && t.date < end)
.GroupBy(t => t.Id)
.Where(g => g.Sum(t => t.Cost) > 100);
答案 1 :(得分:2)
随着你对DavidG的帖子的其他评论
这可能就是你要找的东西
var date = DateTime.Now;
var data = from entry in tables
where entry.Date.Month == date.Month && entry.Date.Year == date.Year
group entry.Cost by entry.Id into g
where g.Sum() > 100
select new { Id = g.Key, Sum = g.Sum() };