System.Linq.Dynamic不适用于实体框架

System.Linq.Dynamic不适用于实体框架,linq,dynamic,linq-to-entities,Linq,Dynamic,Linq To Entities,我正在尝试使用这里发布的LINQ动态查询库- 它应该也适用于EF,但我不能让它满足这一要求 以下几点效果很好: List<string> paramsList = new List<string> {"CustomerID"}; var customer = ctx.Customers.Where(cus=>cus.CompanyName.Contains("A")).Select("new(" +

我正在尝试使用这里发布的LINQ动态查询库-

它应该也适用于EF,但我不能让它满足这一要求

以下几点效果很好:

List<string> paramsList = new List<string> {"CustomerID"};
        var customer =
            ctx.Customers.Where(cus=>cus.CompanyName.Contains("A")).Select("new(" +
                                 string.Join(", ", paramsList.ToArray()) +
                                 ")");     
List paramsList=新列表{“CustomerID”};
var客户=
ctx.Customers.Where(cus=>cus.CompanyName.Contains(“A”))。选择(“新建(”+
string.Join(“,”,paramsList.ToArray())+
")");     
但是,如果我省略了“Where”子句并做了类似的事情

List<string> paramsList = new List<string> {"CustomerID"};
        var customer =
            ctx.Customers.Select("new(" +
                                 string.Join(", ", paramsList.ToArray()) +
                                 ")");     
List paramsList=新列表{“CustomerID”};
var客户=
ctx.Customers.Select(“新建(”+
string.Join(“,”,paramsList.ToArray())+
")");     
我得到以下错误:

“new”无法解析为有效的类型构造函数或函数,靠近函数、方法或类型构造函数

如果我使用Linq2Sql而不是LINQ2实体,它将非常有效


我在这里遗漏了什么?

在实体框架的MSDN论坛上得到了我问题的答复-


如果其他人遇到我这样的情况:

Customers是一个ObjectSet,它不适用于动态Linq

但是,只要添加了.Contains()之类的内容,就会得到一个IQueryable,它确实可以工作

您还可以显式转换为IQueryable,如下所示:

ctx.Customers.AsQueryable().Select(...)

@克里斯:没有。我正在使用一个edmx文件。你需要使用“动态”的
Select()
?将动态
Where()
与静态类型的
Select()
一起使用是可能的,甚至更容易。我需要一个动态Select,因为我想显式地选择在运行时返回哪些列。