Where子句导致无法比较元素错误

时间:2016-06-11 00:55:14

标签: c# lambda

我有两张桌子,医生和DoctorShifts,两张桌子之间的关系是一个(医生)到很多(DoctorShifts)。

在DoctorShifts中,我为每位工作的医生保存了一周的日子。

我需要的是显示今天工作的医生列表,我尝试了以下表达式,但它不起作用:

IQueryable<Doctor> TodayDoctorsQuery = _context.Doctors.Where(s => s.DoctorShifts.Where(s2 => s2.DayOfTheWeek == _todayNumber) != null);

错误是:

  

无法比较类型的元素&#39; System.Collections.Generic.IEnumerable`1 [[MedCare_Software.EDM.DoctorShift,MedCare-Software,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]&# 39 ;.仅支持基本类型,枚举类型和实体类型。&#34;}

我怎样才能获得今天有效的医生名单?

1 个答案:

答案 0 :(得分:4)

内部where子句返回IEnumerable<DoctorShift>,无法将其与null进行比较。

无论如何,您最好使用Any,例如:

var TodayDoctorsQuery = _context.Doctors.Where(
    s=> s.DoctorShifts.Any(s2 => s2.DayOfTheWeek == _todayNumber));

并确保DayOfTheWeek_todayNumber属于同一类型。