List.FindAll()显示空列值的错误

时间:2012-09-12 06:37:48

标签: c# .net linq list findall

objLst = objLst.FindAll(c => c.Emp_cod.Equals(string.Empty)
                || c.Emp_cod.Equals(null))

我有一份所有员工和新员工的名单已被提供,其emp_cod值为null。

现在,当我尝试使用上面的代码找到新员工时,它会给出对象引用错误。

从SQL导入到DBML时,Emp_cod列的字符串定义如下:

[Column(Storage = "_Emp_cod", DbType = "VarChar(10)")]
public string Emp_cod { get; set; }

2 个答案:

答案 0 :(得分:4)

您可以尝试:

objLst = objLst.Where(c => String.IsNullOrEmpty(c.Emp_cod));

答案 1 :(得分:1)

您收到错误的原因是您尝试在null对象上调用实例方法Equals。您需要先检查null,然后检查字符串是否为空。

objLst = objLst.FindAll(c => c.Emp_cod != null && c.Emp_cod.Equals(string.Empty));

或者更好,如果你可以像Adrian的答案一样使用string.IsNullOrEmpty

如果您想检查空白,空白和空格,也可以尝试string.IsNullOrWhiteSpace,但仅限于使用.Net 4.0或更高版本

objLst = objLst.FindAll(c => string.IsNullOrWhiteSpace(c.Emp_code))