我在LINQ中有这样的声明:
(users != null && users.Contains(x.Appointment.UserId))
用户是int[]
。当我运行此代码时,我有一个例外:
无法创建类型为“System.Int32 []”的null常量值。只要 支持实体类型,枚举类型或基元类型 这个背景。
我该怎么办?
答案 0 :(得分:1)
我有类似的问题。假设你是从这样的东西开始的:
var filtered = appointments
.Where(x => users != null && users.Contains(x.Appointment.UserId));
正如@CarstenKönig建议的那样,尝试在Where子句之外移动空检查:
var filtered = users != null ?
appointments.Where(x => users.Contains(x.Appointment.UserId)) :
appointments;
这意味着空检查由C#处理,LINQ to Entities不会尝试将其转换为SQL。