我不知道这是否可能......但它会很酷。问题是,是否可能,但如果可能的话,还有一些例子。
我不确定使用什么方法签名将lambda表达式传递给。
例如方法IList<Group> GetGroups()
如何修改它以便能够将lambda表达式传递给它?
接下来的问题是如何编写lambda表达式以返回所有Group对象,例如
where .deleted == false
或where .DateAdded > aDate
(编辑我认为这实际上有点不合理,因为实际上会获取数据的数据访问层......但是假设您正在通过服务查询某些对象集合而不必担心关于dal)。
答案 0 :(得分:7)
您可以使用GetGroups
类型的参数声明Expression<Func<Group, bool>>
方法,该参数表示组必须匹配才能返回的谓词:
IList<Group> GetGroups(Expression<Func<Group, bool>> predicateExpression);
问题是,表达式无法序列化,因此您无法将其发送到WCF服务......但是,您可能会找到一种方法来使用Expression Tree Serialization项目。
答案 1 :(得分:2)
你可以
Matt Warren seventeen blog articles关于如何做这类事情。
答案 2 :(得分:1)
我认为RIA服务可以满足您的需求,但我不知道它背后的魔力。
答案 3 :(得分:0)
你可以传递一个“谓词”:一个Func<Group, bool>
,它对给定的组返回true或false。由于你可以传递一个lambda,其中Func
是预期的,这可能是这样的:
var fooGroups = GetGroups(g => g.Name.StartsWith("Foo"));