用动态对象构建表达式树的方法

时间:2014-10-01 13:49:52

标签: c# linq dynamic expression-trees

我正在寻找有关如何处理有趣问题的帮助。

我们有代码将构建表达式树(LINQ)来搜索/排序/分页强类型对象的集合。表达式树代码使用反射来构建表达式树,并且可以处理任何集合(只要它是强类型的)。​​

IEnumerable<T> Parse<T>(Request request, IQueryable<T> queryableData) where T: class
// Request Contains the searching/sorting/pagination criteria eg: FuzzySearch: "FindAnyObjectWithThis"

我们最近要求能够自定义搜索/排序的字段。基本上,用户可以动态选择列以包含/排除。为了实现这一点,我们开始使用动态对象(ExpandoObject),但这破坏了解析功能,因为没有用于反射的基础类型。

  1. 我们可以更改Parse以使用DynamicLinq来解析集合,但这需要我们更改Parse函数。

  2. 我们可以尝试动态构建一个类型并在检索原始数据时实例化该类型,但这可能会很慢。

  3. 我们没有想到的方法。

  4. 还有其他人做过类似的事吗?你是怎么做到的?

0 个答案:

没有答案