我使用实体框架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