Linq,c#为集合中的每个项执行方法(动态)

Linq,c#为集合中的每个项执行方法(动态),c#,linq,dynamic,C#,Linq,Dynamic,我得到了一个返回bool的方法-methodToExecute() 还有一个类似这样的集合CollectionVM.SelectedItems.Cast() 我需要对集合中的每一项执行methodToExecute(),并查看是否至少有一项为false 我试过这样的东西 CollectionVM.SelectedItems.Cast<dynamic>().Any(l => (methodToExecute(l.userId) == false)) CollectionVM.S

我得到了一个返回bool的方法-methodToExecute() 还有一个类似这样的集合
CollectionVM.SelectedItems.Cast()

我需要对集合中的每一项执行methodToExecute(),并查看是否至少有一项为false

我试过这样的东西

CollectionVM.SelectedItems.Cast<dynamic>().Any(l => (methodToExecute(l.userId) == false))
CollectionVM.SelectedItems.Cast().Any(l=>(methodToExecute(l.userId)==false))
但在运行时我犯了一个错误

无法将lambda表达式用作参数 调度操作


有人能给出一个解决方法吗?

因为你需要一个有
用户ID的类,而不是使用
动态的
,使用包含这样属性的接口。不要使用
动态的
来处理你真正知道的事情。话虽如此,如果您知道所有实例都有一个公共成员,请为它们提取一个接口,并将每个元素转换为该接口,而不是转换为
动态
。事实上,我会尽量避免使用
dynamic
。事实上,这将使您的代码更易于阅读和维护,而且最重要的是,编译器可以帮助您避免讨厌的错误。无论如何,为什么您的VM
是动态的?您不知道视图中显示的对象类型吗?这似乎是这里的实际问题。