代码之家  ›  专栏  ›  技术社区  ›  casillas

LINQ中的Null checker

  •  0
  • casillas  · 技术社区  · 8 年前

    我有 resData 对象具有 Courses 列表项和 Error 所有物我已经检查了所有 课程 列表项目 错误 属性,它们都是 null .

    但是,当我签入以下内容时,它会返回 true .

    我想知道我错过了什么?

    if(resData.Courses.Select(x => x.Error != null && x.Error.Length > 0).Count() > 0)
    {
       Console.WriteLine("Error");
    }
    
    1 回复  |  直到 8 年前
        1
  •  5
  •   ocuenca    8 年前

    因为你用的是 Select ,您正在投影集合,而不是应用条件,您应该使用 Where 相反,或使用重载 Count 方法:

    if(resData.Courses.Count(x => x.Error != null && x.Error.Length > 0) > 0)
    

    正如@Chris指出的,如果你使用 Any 要避免枚举整个列表,请执行以下操作:

    if(resData.Courses.Any(x => x.Error != null && x.Error.Length > 0))