【发布时间】:2011-03-16 21:51:09
【问题描述】:
我有一组类用于某些客户端的数据访问层。作为数据访问的一部分,我允许以这种格式发送一组过滤器:
"{Member[.Member....]}{Operator}{Value}"
我想将这些字符串转换为委托,以便在 LINQ 查询中使用,如下所示:
.Where([delegate returned by a factory])
这是一个更具体的例子:
IEnumerable<Parent> parents = GetSomeParents();
string filter = "Child.Id=5";
var expression = FilterFactory<Parent>.GetExpression(filter);
parents = parents.Where(expression);
表达式将包含委托:parent => parent.Child.Id == 5
有没有办法使用反射以通用方式构造 FilterFactory 来处理我发送的任何成员路径?带索引的路径不是必需的,但会很好。
【问题讨论】:
标签: c# linq parsing reflection delegates