我在我的"其中"条件。以下是我的代码:
var elimentid = db.Consult.Where(x => x.EnquiryId == Patientid).Select(x => x.AilmentId);
var details = (from detail in db.M_SelfHelp
join alimet in db.Aliment on detail.SubAilmentId equals alimet.AilmentId
where (detail.AilmentId == elimentid)
select new SelpHelp
{
AlimemtName = alimet.Name,
Alimentid = alimet.AilmentId
}
).ToList();
请告诉我我的代码中有什么问题?
答案 0 :(得分:3)
您需要首先查询单数结果:
var elimentid = db.Consult.Where(x => x.EnquiryId == Patientid)
.Select(x => x.AilmentId).FirstOrDefault();
或者你可以写:
var consult = db.Consult.Where(x => x.EnquiryId == Patientid).FirstOrDefault();
var elimentid = consult.AilmentId;
现在它不是int
而是IQueryable<int>
,您无法将int
与IQueryable<int>
明显地使用==
运算符进行比较。
如果我们确定SingleOrDefault()
中的EnquiryId
始终存在单一记录,您也可以使用Consult
。
这会使您的代码编译并且可以工作但是可能无法从linq查询中返回预期的结果,就好像第一个查询中有多个行需要并且您希望将所有行放在这些ID上,那么您需要做一些工作。