LINQ to实体无法识别方法';System.String获取_项(System.String)和#x27;方法

LINQ to实体无法识别方法';System.String获取_项(System.String)和#x27;方法,linq,iqueryable,entities,Linq,Iqueryable,Entities,我在这里看过各种各样的解决方案,但似乎没有一个对我有效,可能是因为我对所有这些都太陌生了,正在黑暗中摸索。在下面的代码中,对象“约会”包含一些基本LDAP信息。从这些对象的列表中,我希望能够基于员工id获得单个记录。我希望这里的代码足以说明这一点。FTR,我尝试过各种配方,包括尝试使用from和select。所有测试均失败,并出现上述标题中给出的错误 IQueryable<appointment> query = null; foreach(var record in result

我在这里看过各种各样的解决方案,但似乎没有一个对我有效,可能是因为我对所有这些都太陌生了,正在黑暗中摸索。在下面的代码中,对象“约会”包含一些基本LDAP信息。从这些对象的列表中,我希望能够基于员工id获得单个记录。我希望这里的代码足以说明这一点。FTR,我尝试过各种配方,包括尝试使用from和select。所有测试均失败,并出现上述标题中给出的错误

IQueryable<appointment> query = null;

foreach(var record in results)
{
    BoiseStateLdapDataObject record1 = record;
    query = db.appointments.Where(x => x.student_id == record1.Values["employeeid"]);
}

if (query != null)
{
    var selectedRecord = query.SingleOrDefault();
}
IQueryable查询=null;
foreach(结果中的var记录)
{
BoiseStateLdapDataObject记录1=记录;
query=db.appoints.Where(x=>x.student_id==record1.Values[“employeeid]”);
}
if(查询!=null)
{
var selectedRecord=query.SingleOrDefault();
}

尝试将员工id移出查询:

IQueryable<appointment> query = null;

foreach(var record in results)
{
    var employeeId = record.Values["employeeid"];
    query = db.appointments.Where(x => x.student_id == employeeId);
}

if (query != null)
{
    var selectedRecord = query.SingleOrDefault();
}
IQueryable查询=null;
foreach(结果中的var记录)
{
var employeeId=record.Values[“employeeId”];
query=db.appoints.Where(x=>x.student\u id==employeeId);
}
if(查询!=null)
{
var selectedRecord=query.SingleOrDefault();
}

谢谢。这修正了错误。你能告诉我为什么它能修好它吗?或者这超出了本论坛的范围?@user2283231当您使用Linq to实体时,表达式树被传递到
Where
方法,然后对其进行分析并转换为SQL。EF无法将索引器调用转换为SQL。这就是为什么传递普通值解决了这个问题。如果答案有帮助,请随意接受:)