我在此LINQ查询中收到异常的“ NullReferenceException未由用户代码处理”错误:

List<UDIDInfo> d2Android = d2.Where(x.DeviceOS == (byte)DeviceOS.Android).ToList();


我继续并添加了一个空检查,仍然出现错误

List<UDIDInfo> d2Android = d2.Where(x => x.DeviceOS != null && x.DeviceOS == (byte)DeviceOS.Android).ToList();


请注意,(byte)DeviceOS.Androidd2都不为空

编辑(解决方案):

List<UDIDInfo> d2Android = d2.Where(x => x != null && x.DeviceOS != null && x.DeviceOS == (byte)DeviceOS.Android).ToList();

最佳答案

如果x为空怎么办?也就是说,可枚举的d2包含一个null项。

尝试以下方法。您不应获得任何null引用异常。

List<UDIDInfo> d2Android = d2
    .Where(x => x != null)
    .Where(x => x.DeviceOS != null)
    .Where(x => x.DeviceOS == (byte)DeviceOS.Android)
    .ToList();

10-08 13:30