.net LINQ to实体无法识别方法Int32 get_项(Int32)

.net LINQ to实体无法识别方法Int32 get_项(Int32),.net,linq,entity-framework,.net,Linq,Entity Framework,我是实体框架和linq的新手。我的问题是这样的 var query = (from d in db.MYTABLE where d.RELID.Equals(myInts[0]) select d.ID).Distinct(); List<int?> urunidleri = query.ToList(); 当我执行这段代码时,得到错误消息LINQ to Entities不识别方法Int32 get\U ItemInt32。我怎

我是实体框架和linq的新手。我的问题是这样的

var query = (from d in db.MYTABLE
             where d.RELID.Equals(myInts[0])
             select d.ID).Distinct();

List<int?> urunidleri = query.ToList();
当我执行这段代码时,得到错误消息LINQ to Entities不识别方法Int32 get\U ItemInt32。我怎样才能解决我的问题

谢谢

您需要将int存储在一个变量中,这样EntityFramework就不会试图将整个数组拉入其作用域

var firstInt = myInts[0];
var query = (from d in db.MYTABLE
             where d.RELID.Equals(firstInt)
             select d.ID).Distinct();

List<int?> urunidleri = query.ToList();
var myInt = myInts[0];

var query = (from d in db.MYTABLE
             where d.RELID.Equals(myInt)
             select d.ID).Distinct();

List<int?> urunidleri = query.ToList();

Linq查询最终转换为SQL查询,Linq不知道如何处理获取用户名项的会话[UserName]

解决这一问题的一种常见方法是只使用一个局部变量,您将为其分配会话[UserName],并在Linq查询中使用它


参考

我明白了,但现在我得到了不同的错误。此文件中仅支持基本类型“如Int32、String和Guid”context@Murat,那么myInts中的类型是什么?在firstInt之前,将鼠标悬停在var上以查找。我可以将foreach用于IQueryable对象吗。例如,查询{int x=item.Value}@Murat中的foreachvar item,是的,如果MYTABLE.ID是int。一般来说,为什么LINQ to Entities尝试在那里调用get_ItemInt32?因为C正在生成涉及数组的表达式树。这些表达式由EF转换为SQL,EF不知道如何处理数组。您确定回答的问题正确吗?OP根本没有提到会话,这个问题已经有了一个公认的答案好几年了。这似乎并不意味着你不能添加一些东西,但它更可能是一个错误。用户的答案是正确的-它是公认答案的同义词,并简化了它。本质上,Linq查询最终会转换为SQL查询,而Linq不知道如何处理
string loggedUserName = Session["LogedUsername"].ToString();
var userdetail = dc.faculties.Where(a => a.F_UserName.Equals(loggedUserName)).FirstOrDefault();