【问题标题】:Can I use an embedded lambda with the Contains method?我可以使用包含方法的嵌入式 lambda 吗?
【发布时间】:2011-08-31 11:49:15
【问题描述】:

我想用FindAll过滤一个列表

如果我写:

.FindAll(
    p => p.Field == Value && 
    p.otherObjList.Contains(otherObj));

没关系,但如果我写

.FindAll(
    p => p.Field == Value && 
    p.otherObjList.Contains(
        q => q.Field1 == Value1 && 
        q.Field2 == Value2));

我收到 C# 语法错误消息:Unknown Method FindAll(?) of .. the otherObjList

我无法准确定义 otherObj,因为我只知道 Field1 和 Field2 这两个字段的值。

我做错了什么?在这种情况下我该怎么办?

【问题讨论】:

    标签: c# linq lambda contains


    【解决方案1】:

    大多数集合类型以及 LINQ 版本的 Contains() 方法都需要与集合类型相同的参数,而不是 lambda。

    您似乎只是想检查是否有任何项目符合某些条件。您应该使用Any() 方法。

    .FindAll(p => p.Field == Value
               && p.otherObjList.Any(q => q.Field1 == Value1 && q.Field2 == Value2))
    

    【讨论】:

    • @refactor:他可能会忘记。
    • 对不起,我已经提出了这个问题,但我没有注册,没有注册我无法接受答案。但我已经补偿了。
    猜你喜欢
    • 2012-08-22
    • 2012-12-11
    • 2021-04-05
    • 2017-10-21
    • 1970-01-01
    • 2014-07-16
    • 2020-02-22
    • 1970-01-01
    相关资源
    最近更新 更多