2013-10-28 70 views
2

有沒有一種方法可以使用實體框架與「BETWEEN」做一個「INNER JOIN」?Entity Framework INNER JOIN與「BETWEEN」日期範圍

我有一個表格,每個月的第一天的日期列表,我想關聯所有我在本月的記錄,所以我可以按月分組。

無論如何,我想重現什麼是類似的東西:

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

看看這個答案:LINQ Join On Between Clause

在LINQ到實體查詢的兩個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將被查詢第一至它拉入本地存儲器中,然後此結果將是內加入monthList產生query對象。

+0

謝謝,它工作完美。 – Hemadeus

+0

已更新爲'select new {}'以查詢完整性。 – erdinger