0

私はいくつかのことを試しましたが、うまくいきません。基本的に、EFMVC3にネストされたクエリを追加したいと思います。

SQLクエリ:

select * from Book where Book_PK in(select Book_Ref from Library where Library_Ref = '18bd9526-f3e9-4d5b-86cd-ccfea64b6f7b')

Book_PKはBookの主キーです
Book_refはBookの外部キーです

Library_Refは、Book_refをフィルタリングするための単なる属性です。

私は2つのテーブルを持っています:外部キーを介して接続されている本と図書館。

入力はidだけですが、これはLibraryの主キーではありません。私が試してみました:

`
School.Models.Entities.SchoolAll db = new Models.Entities.SchoolAll(); // db consists whole database

var temp = db.Books.Where(e => e.Book_PK.Contains(db.Libraries.Where(f => f.Library_Ref == id))).ToList();
// where id is one of the field of Library`

各ライブラリエンティティには1つある場合もあれば、ブックエンティティがある場合もあります。したがって、クエリの結果はリストとして表示されることになっています。このリストを1つの変数に保存する必要があります。誰か助けてもらえますか?

4

2 に答える 2

0

以下のように、SinglメソッドをWhereの代わりに使用できます

var temp = db.Books.Single(e => e.Book_PK.Contains(db.Libraries.Where(f => f.Library_Ref == id)));
于 2012-12-26T08:17:09.270 に答える
0

以下のクエリを変換しました:

select * from Book where Book_PK in (select Book_Ref from Library where Library_Ref='18bd9526-f3e9-4d5b-86cd-ccfea64b6f7b' )

以下のエンティティ フレームワークに:

デシベル.Books.Where(y => y.L​​ibraries.Any(r => r.Library_Ref == id)).ToList()

ありがとう

于 2012-12-31T08:24:49.687 に答える