解决linq表达式错误

Resolve the linq expression error

我有如下所示的代码,但它给出了编译错误“无法将表达式类型 'System.Collections.Generic.List' 转换为 return 类型 'bool'

List<Condition> cod = MyRules.ToList().Where(r=>r.Conditions.ToList().Where(c=>c.id == 123).ToList();

这里我需要获取所有 'MyRules' 条件为 'id' = 123 请帮我找出正确的表达方式。提前致谢。

首先,不清楚您为什么到处打电话给 ToList。最后,也许……但没必要再早了。我认为您可能正在寻找 Any 方法:

List<Condition> cod = MyRules.Where(r => r.Conditions.Any(c => c.id == 123))
                             .ToList();

请注意每行编写一个 "top level" 方法调用如何更容易检查括号(您的原始代码至少缺少一个右括号)并且通常更易于阅读。

如果您想找到 所有 条件的 id 为 123 的规则,您可以使用 All 而不是 Any.

您有 ToList 调用,在 Where 子句中:

      |                                               |
      ˅                                               ˅      
   Where(r=>r.Conditions.ToList().Where(c=>c.id == 123).ToList()

并且不要到处使用 ToList()。如果你的类型是可枚举的,你不需要将它们转换为 List<T> 来查询它们。