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

Hem*_*eus 2 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)
Run Code Online (Sandbox Code Playgroud)

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

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

另一件需要注意的事情是,这montList不是我的背景的一部分。

nom*_*mad 5

看这个答案: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 };
Run Code Online (Sandbox Code Playgroud)

在您的情况下,由于monthList不是DbContext对象的一部分,Context.Assignments因此将首先查询将其拉入本地内存,然后该结果将进行内部连接monthList生成query对象。