2011-05-23 80 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

相關問題