我使用實體框架6.0.1,我有一個問題:LINQ到實體不能編譯商店表達
我的下一個DB結構:
public class User
{
int Id { get; set;}
string E-mail {get; set;}
string Name {get; set;}
...
}
class House
{
string Id {get; set;}
string Name { get; set; }
string Street { get; set; }
. . .
IQueryable<User> Users { get; set; }
}
家家戶戶都可以鏈接到許多用戶。任何用戶都可以鏈接到許多房屋。
我需要創建一個查詢,在其中獲得一個特定用戶所附的房屋列表 我只知道用戶標識。
我寫了下面的語句:
var houses = this.context.Houses
.Where(house => house.Users.Any(i => i.Id == my_searched_user_id));
,但我得到的錯誤:LINQ到實體無法識別方法「System.String ElementAtOrDefault [字符串](System.Collections.Generic.IEnumerable`1 [系統.String],Int32)'方法,並且此方法不能轉換爲商店表達式。
我將其更改爲
var houses = this.context.Houses
.Where(house => house.Users.**ToList()**.Any(i => i.Id == my_searched_user_id));
,但沒有任何運氣:(
在您發佈的代碼中沒有關於'ElementAtOrDefault'的內容。你以後如何使用'房屋'變量?這很重要,因爲LINQ執行是延遲的,所以你顯示的代碼實際上並不執行任何數據庫查詢,它只是創建一個查詢定義,這可能會隨着進一步的方法調用而改變。 – MarcinJuraszek 2014-08-30 05:34:19