从现有列表比较创建新列表

时间:2015-06-04 15:33:53

标签: c# linq list join

我有两个清单:

List<Course> studentCourses = Course.GetCourses(student.PIDM, GetTermCode());  
List<OfferedCourse> offeredCourses = OfferedCourse.GetOfferedCourses();

studentCourses的属性为SubjectCodeCourseNumber providedCourses还具有属性SubjectCodeCourseNumber

我想创建一个类型为List<Course>的第三个列表,其中只包含studentCourses中与SubjectCodeCourseNumberofferedCourses匹配的项目}。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

Linq使用了非直观的语法:使用可能包含您所追求的值的集合中的Contains

var result = studentCourses.Where(c => offeredCourses.Contains(o => o.SubjectCode == c.SubjectCode && o.CourseNumber == c.CourseNumber));

答案 1 :(得分:0)

解决方案最终成为:

IEnumerable<Course> courses = studentCourses.Where(sc => offeredCourses.Any(oc => oc.SubjectCode == sc.SubjectCode && oc.CourseNumber == sc.CourseNumber));

非常感谢cosmo0指出我正确的方向,而马格努斯又仔细检查了我的工作!