【问题标题】:Create New List From Existing Lists Comparison从现有列表比较创建新列表
【发布时间】:2015-06-04 15:33:52
【问题描述】:

我有两个列表:

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

studentCourses 具有属性SubjectCodeCourseNumber
提供的课程也有属性SubjectCodeCourseNumber

我想创建第三个List&lt;Course&gt; 类型的列表,其中仅包含来自studentCourses 的项目,这些项目与offeredCourses 中的项目的SubjectCodeCourseNumber 匹配。

任何帮助将不胜感激。

【问题讨论】:

  • 您可以发布您已经尝试过的内容吗?
  • 好吧,是什么阻止了你?
  • 只添加第二个? oc =&gt; oc.SubjectCode == sc.SubjectCode &amp;&amp; oc.CourseNumber == sc.CourseNumber)

标签: c# linq list join


【解决方案1】:

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

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

【讨论】:

  • 部分:providedCourses.Contains(o => o.SubjectCode 出错。它没有将 o 视为 OfferedCourse 对象,因此没有可供选择的属性。知道为什么会这样吗?
【解决方案2】:

解决方案最终是:

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

非常感谢 cosmo0 为我指明了正确的方向,以及 Magnus 仔细检查了我的工作!

【讨论】:

  • 别担心,很高兴我能帮助您解决“问题”。它发生在我们所有人身上。 &我实际上是想帮助你:)
  • 如果我的回答没有解决你的问题,不应该被接受。如果仍然可以,请取消标记并等待 2 天标记您的。如果我帮助了你,你可以投票赞成我的回答。
猜你喜欢
  • 1970-01-01
  • 2018-09-24
  • 2018-11-12
  • 2020-03-08
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2020-05-10
  • 2019-12-27
相关资源
最近更新 更多