我可以将嵌入式 lambda 与 Contains 方法一起使用吗?
我想用 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 这两个字段的值。
我做错了什么?这种情况我能做什么?
I want to filter a list with FindAll
If I write:
.FindAll(
p => p.Field == Value &&
p.otherObjList.Contains(otherObj));
it's ok, but if I write
.FindAll(
p => p.Field == Value &&
p.otherObjList.Contains(
q => q.Field1 == Value1 &&
q.Field2 == Value2));
I get C# syntax error message: Unknown Method FindAll(?) of .. the otherObjList
I cannot define the otherObj exactly, because I know only the values of two fields, Field1 and Field2.
What have I done wrong? What can I do in this case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
大多数集合类型以及 LINQ 版本的
Contains()
方法都需要一个与集合类型相同的参数,而不是 lambda。看来您只是想检查是否有任何项目符合某些条件。您应该使用
Any()
方法。The
Contains()
method for both most collection types as well as the LINQ version expects an argument of the same type as the collection, not a lambda.It appears you are just trying to check if any item matches some condition. You should use the
Any()
method.