运营商&= 39; ==&#39;不能应用于&#39; int&#39;类型的操作数和&#39; IQueryable <int>&#39;

时间:2018-03-20 13:23:41

标签: asp.net-mvc

我在我的&#34;其中&#34;条件。以下是我的代码:

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();

请告诉我我的代码中有什么问题?

1 个答案:

答案 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>,您无法将intIQueryable<int>明显地使用==运算符进行比较。

如果我们确定SingleOrDefault()中的EnquiryId始终存在单一记录,您也可以使用Consult

这会使您的代码编译并且可以工作但是可能无法从linq查询中返回预期的结果,就好像第一个查询中有多个行需要并且您希望将所有行放在这些ID上,那么您需要做一些工作。