我想使用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#语法错误消息:未知方法FindAll(?)of ... otherObjList
我无法准确定义otherObj,因为我只知道两个字段Field1和Field2的值。
我做错了什么?在这种情况下我该怎么办?
答案 0 :(得分:7)
大多数集合类型的Contains()
方法以及LINQ版本都需要一个与集合相同类型的参数,而不是lambda。
看起来您只是想检查是否有任何项目符合某些条件。您应该使用Any()
方法。
.FindAll(p => p.Field == Value
&& p.otherObjList.Any(q => q.Field1 == Value1 && q.Field2 == Value2))