实体框架选择列的总和大于x的位置

时间:2015-10-16 11:18:22

标签: c# entity-framework

我有一个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

2 个答案:

答案 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() };