System.Linq.Dynamic不适用于实体框架
我正在尝试使用这里发布的LINQ动态查询库- 它应该也适用于EF,但我不能让它满足这一要求 以下几点效果很好: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(" +
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,因为我想显式地选择在运行时返回哪些列。