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

从列表中检索项目

  •  -1
  • casillas  · 技术社区  · 8 年前

    我正在尝试获取 Courses 从 courseData 列表项。

    然而,以下是我的收获 boolean .

    var course = courseData.Courses.Select(x => x.Entities.Select(a => a.courseId == courseDto.Id)).FirstOrDefault();
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Ousmane D.    8 年前

    目前, course 属于类型 IEnumerable<bool> 因为在你的 内部的 Select 从某种类型投射的子句 a 并返回 a.courseId == courseDto.Id ( bool )这导致了 IEnumerable<布尔> 为每个元素执行提供的lambda之后 x.Entities .

    一旦执行 外面的 选择 子句,然后生成一个类型 IEnumerable<IEnumerable<bool>> 当你打电话的时候 FirstOrDefault() 在上面只需检索第一个 IEnumerable<布尔> 要素

    现在,你很可能正在寻找 Where 子句,以便可以保留传递谓词的所有元素 a => a.courseId == courseDto.Id . 然后,我们将平整 IEnumerable<IEnumerable<Entity>> 进入 IEnumerable<Entity> 然后收集到列表或检索第一个元素(如果存在),否则为引用类型的默认值( null ).

    检索课程列表。

    var course = 
          courseData.Courses
                    .SelectMany(x => x.Entities.Where(a => a.courseId == courseDto.Id))
                    .ToList();
    

    从课程列表中检索第一项。

    var course = 
         courseData.Courses
                   .SelectMany(x => x.Entities.Where(a => a.courseId == courseDto.Id))
                   .FirstOrDefault();
    
        2
  •  0
  •   Parul Bansal    8 年前
    var Result = Course_Object.Where(u => u.Id == 1).FirstOrDefault();