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);

注意すべきもう1つのことは、それmontListは私の文脈の一部ではないということです.

4

1 に答える 1

4

この回答を見てください: LINQ Join On Between Clause

LINQ to Entities クエリでは、2 つの行が SQL ステートメントでfromも生成されます。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の一部ではないため、最初にクエリを実行してローカルメモリにプルし、次にこの結果を内部結合してオブジェクトを生成します。DbContextContext.AssignmentsmonthListquery

于 2013-10-28T20:16:15.507 に答える