2011-05-23 64 views
5

我想筛选与FindAll我可以使用Contains方法使用嵌入式lambda吗?

列表如果我写:

.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#语法错误消息:未知方法的FindAll (?)of otherObjList

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

我做错了什么?在这种情况下我能做些什么?

回答

7

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

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

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

谢谢! mikeM – mikeM 2011-05-23 21:41:33

+0

@mikeM:不要忘记将此答案标识为正确。 – Tom 2011-05-23 21:51:01

+0

@refactor:他可能会忘记。 – x0n 2011-05-23 21:56:14

相关问题