2012-12-26 124 views
0

我嘗試了幾件事,但它不起作用。基本上,我想在EF MVC3上添加嵌套查詢。實體框架MVC3的嵌套查詢

SQL查詢:

SELECT * FROM書其中Book_PK在

Book_PK是主鍵(從庫 其中Library_Ref = '18bd9526-f3e9-4d5b-86cd-ccfea64b6f7b' 選擇Book_Ref)圖書
Book_ref是外鍵預訂

Library_Ref只是屬性過濾Book_ref

我有2個表:通過外鍵連接的圖書和圖書館。

我只有一個輸入,它是id,但這不是庫的主鍵。 我曾嘗試:

` 
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` 

每個圖書館實體可以有一個或可預訂的實體。所以,查詢的結果應該是列表。我需要將這個列表保存到一個變量中。誰能幫我?

回答

0

成功完成,將下面的查詢:

SELECT * FROM本書,Book_PK中(從庫 其中Library_Ref選擇Book_Ref = '18bd9526-f3e9-4d5b-86cd-ccfea64b6f7b')

到下面實體框架:

db.Books.Where(Y => y.L​​ibraries.Any(R => r.Library_Ref == ID))。ToList()

由於計算器

0

可以使用SINGL方法insetead在哪裏,像下面

var temp = db.Books.Single(e => e.Book_PK.Contains(db.Libraries.Where(f => f.Library_Ref == id))); 
+0

您好,感謝您的回覆。我試過你的解決方案。但它有2個錯誤: - string.Contains(string)'有一些無效參數 - 無法從'System.Linq.IQueryable '轉換爲'字符串' 什麼是錯?結果可能是多個項目/實體。 Single是否合適? –

+0

在EF LINQ查詢您只能使用primitve類型,如int,字節串,...。你不能使用String.Contains方法,它 – Kisame

+0

嗯..你有什麼其他的方式來表示我上面的查詢?所有涉及的屬性都在varchar中。 –