【问题标题】:Compare list of strings with object properties in another list将字符串列表与另一个列表中的对象属性进行比较
【发布时间】:2015-11-06 03:48:00
【问题描述】:

我有一个包含课程代码的字符串列表,以及一个将courseCode 作为属性的对象列表。

我正在尝试找到一个 linq 表达式来比较两者,并让我知道字符串列表中的项目与对象列表中的 courseCode 属性之间是否存在任何匹配。

我刚才有一个工作表达,长话短说,我现在没有了,我的笔记本电脑和显示器没有一百万个,这是一个奇迹:)

以下是我目前对比较的最佳猜测。 results 是对象列表,coursesThatWork 是字符串列表。下面的表达式给出了错误信息

无法将表达式类型“System.Collections.Generic.IEnumerable”转换为返回类型“bool”

results.Where(x => coursesThatWork.Where(y => y.Equals(x.CourseCode))).Count() == 0

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    您收到错误是因为Where 需要一个布尔谓词,但您再次传递了Where,它返回IEnumarable<T>,因此出现错误。你需要Any 这里会返回一个布尔值来匹配条件:-

    results.Where(x => coursesThatWork.Any(y => y.Equals(x.CourseCode))).Count() == 0
    

    【讨论】:

    • 并且可能与 Any 一致:!results.Any(x => coursesThatWork.Any(y => y.Equals(x.CourseCode)))
    猜你喜欢
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2018-09-07
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多