我有一个如下所示的代码,但它给出了编译错误"无法转换表达式类型' System.Collections.Generic.List'返回类型' bool'
List<Condition> cod = MyRules.ToList().Where(r=>r.Conditions.ToList().Where(c=>c.id == 123).ToList();
在这里,我需要获得所有&#39; MyRules&#39;哪个条件有&#39; id&#39; = 123 请帮我找出正确的表达方式。提前谢谢。
答案 0 :(得分:4)
首先,您不清楚为什么要在整个地方呼叫ToList
。最后,也许......但不需要它。我想你可能正在寻找Any
方法:
List<Condition> cod = MyRules.Where(r => r.Conditions.Any(c => c.id == 123))
.ToList();
注意如何在每行编写一个“顶级”方法调用,可以更容易地检查括号(原始代码至少缺少一个右括号),并且更容易阅读。
如果您想查找所有的条件,条件的id
为123,则您使用All
代替Any
。
答案 1 :(得分:1)
您在ToList
子句内进行Where
调用:
| |
˅ ˅
Where(r=>r.Conditions.ToList().Where(c=>c.id == 123).ToList()
不要在任何地方使用ToList()
。如果您的类型是可枚举的,则无需将其转换为List<T>
来查询它们。