构建LINQ选择有条件地类似于使用PredicateBuilder for Where子句

时间:2013-10-30 18:55:39

标签: linq select predicatebuilder

我正在使用LINQ on Entity Framework进行动态查询。 要通过用户输入过滤器查询某些表,我们使用PredicateBuilder创建条件WHERE部分。这确实很好,但返回的列数是固定的。

现在,如果我们需要用户在他们的报告中选择他需要的列,除了他们的过滤器之外,我们也遇到了麻烦,因为我们不知道如何动态myQuery.Select( x => new { ... })和Where子句一样

我们怎样才能实现这样的目标?

1 个答案:

答案 0 :(得分:1)

一些搜索显示这很棘手。匿名类型是在编译时创建的,因此动态创建匿名类型并不容易。 This answer包含使用Reflection.emit的解决方案。

如果可能,我建议您返回类似IDictionary<,>的内容。