public DoctorClass GetById(int id)
{
using (var context = new EmrContext())
{
var query = from d in context.Doctors
join c in context.Users on d.Id equals c.Id
where d.Id==id
select new DoctorClass { Email = c.Email, FirstName = c.FirstName, LastName = c.LastName, Post = d.Post };
return query;
}
}
这是错误:无法将类型'System.Linq.IQueryable'隐式转换为'Mvc.Models.DoctorClass'。存在显式转换(您是否错过了演员?)
我需要用“查询”来解决这个问题吗?
答案 0 :(得分:3)
在这种情况下,您几乎肯定希望使用Single()
:
return query.Single();
或者可能是SingleOrDefault()
:
return query.SingleOrDefault();
假设肯定只有一个这样的结果,如果有的话。 (两者之间的差异是如果没有匹配记录会发生什么。SingleOrDefault
将返回null; Single
将抛出异常。
如果合法地存在多个匹配,您应该考虑您想要发生的事情。例如,您可以使用First()
/ FirstOrDefault
。
答案 1 :(得分:0)
您将返回IQueryable<DoctorClass>
,您需要返回DoctorClass
:
您可以使用:
return query.FirstOrDefault();
哪会返回query
中的第一项。