解决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>
来查询它们。
我有如下所示的代码,但它给出了编译错误“无法将表达式类型 '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>
来查询它们。