从列表中检索项目

时间:2018-01-05 22:23:33

标签: c# linq

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

但是,以下内容会返回boolean

var course = courseData.Courses.Select(x => x.Entities.Select(a => a.courseId == courseDto.Id)).FirstOrDefault();

2 个答案:

答案 0 :(得分:1)

目前,course的类型为IEnumerable<bool>,因为在您的内部 Select子句中,您正在从某种类型a投射并返回{ {1}}(a.courseId == courseDto.Id)在为bool的每个元素执行提供的lambda之后产生IEnumerable<bool>

执行外部 x.Entities子句后,这会产生Select类型,然后当您调用IEnumerable<IEnumerable<bool>>时;只会导致检索第一个FirstOrDefault()元素。

现在,您最有可能寻找IEnumerable<bool>子句,以便保留传递谓词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();

答案 1 :(得分:0)

var Result = Course_Object.Where(u => u.Id == 1).FirstOrDefault();