2

实体框架有没有办法用“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不是我的上下文的一部分。

4

1 回答 1

4

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

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

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

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因此将首先查询以将其拉入本地内存,然后将此结果内部连接monthList生成query对象。

于 2013-10-28T20:16:15.507 回答