0

lambda .Include() を使用して、リンクされたテーブル データを次のようにフィルター処理しようとしています。

var jobs = db.jobs.Include(d => d.docs)
           .Where(d => d.docs.startdate >= date1 && d => d.docs.enddate <= date1);
return View(jobs);

しかし、これはうまくいきません。リンクされたテーブルデータを正しくフィルタリングするための正しい構文を知っている人はいますか? ありがとう!

アップデート:

d.docs.startdate
d.docs.enddate

d.docs.startdate または d.docs.enddate を使用すると、".startdate" と ".enddate" が Intellisense に表示されません。テーブルのリレーションシップをリンクして変更を保存しましたが、コードで .Include() コマンドを使用した後でも、Intellisense はドキュメント テーブルの startdate フィールドと enddate フィールドを intellisense で見つけることができません。

エラー: 'System.Collections.Generic.ICollection' には 'duedate' の定義が含まれておらず、タイプ 'System.Collections.Generic.ICollection' の最初の引数を受け入れる拡張メソッド 'duedate' が見つかりませんでした (ディレクティブまたはアセンブリ参照を使用していますか?)

...ここで何が欠けているのかわからない?

4

2 に答える 2

2

Include()Where()声明の後:

var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
             .Include(d => d.docs);
return View(jobs);
于 2013-06-07T21:04:28.950 に答える
-1

内に 2 つのラムダを使用しないでくださいWhere()。したがって、クエリは次のようになります。

var jobs = db.jobs.Where(d => d.docs.startdate >= date1)
                  .Where(d => d.docs.enddate <= date1)
                  .Include(d => d.docs);
return View(jobs);

または両方の場所が 1 つのラムダにあります (どちらも同じ結果になります):

var jobs = db.jobs.Where(d => d.docs.startdate >= date1 && d.docs.enddate <= date1)
                  .Include(d => d.docs);
return View(jobs);

Where()とはInclude()同じ意味ではありません。データを熱心にロードWhere()しながら、データをフィルタリングします。Include()

于 2013-06-07T21:14:53.013 に答える