如何在LINQ中检查数组是否为空?

时间:2014-07-30 10:09:38

标签: c# linq

我在LINQ中有这样的声明:

(users != null && users.Contains(x.Appointment.UserId))

用户是int[]。当我运行此代码时,我有一个例外:

  

无法创建类型为“System.Int32 []”的null常量值。只要   支持实体类型,枚举类型或基元类型   这个背景。

我该怎么办?

1 个答案:

答案 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。