实体框架INNER JOIN具有“BETWEEN”日期范围

时间:2013-10-28 20:08:37

标签: c# linq entity-framework

实体框架是否有办法用“BETWEEN”进行“INNER JOIN”?

我有一个表格,其中列出了每个月第一天的日期,我希望关联本月的所有记录,以便按月分组。

无论如何,我想要重现的是:

SELECT a.* 
FROM Assignments as a
INNER JOIN monthList as m ON ( m.Date BETWEEN a.StartDate AND a.EndDate)

这是我尝试但不起作用的......

var query = (from a in Context.Assignments
             join m in monthList on (m >= a.StartDate && m <= a.EndDate);

另外需要注意的是montList不属于我的背景。

1 个答案:

答案 0 :(得分:4)

看看这个答案:LINQ Join On Between Clause

在LINQ to Entities查询中,连续两个from在SQL语句中也生成INNER JOIN

在您的情况下,您将拥有以下内容。

var query = from a in Context.Assignments
            from m in monthList
            where m >= a.StartDate && m <= a.EndDate
            select new { a.SomeProperty, a.AnotherProperty };

在您的情况下,由于monthList不属于您的DbContext对象,因此将首先查询Context.Assignments以将其拉入本地内存,然后此结果将 inner与monthList一起以生成query个对象。