我正在尝试使用此处发布的 LINQ 动态查询库 - http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
它应该也适用于 EF,但我无法让它满足这一要求。
以下效果很好:
List<string> paramsList = new List<string> {"CustomerID"};
var customer =
ctx.Customers.Where(cus=>cus.CompanyName.Contains("A")).Select("new(" +
string.Join(", ", paramsList.ToArray()) +
")");
但是如果我省略“Where”子句并做这样的事情
List<string> paramsList = new List<string> {"CustomerID"};
var customer =
ctx.Customers.Select("new(" +
string.Join(", ", paramsList.ToArray()) +
")");
我收到以下错误:
'new' cannot be resolved into a valid type constructor or function., near function, method or type constructor
如果我使用 Linq2Sql 而不是 Linq2Entities,它会完美地工作。
我在这里错过了什么?
最佳答案
如果其他人像我一样遇到这个问题:
ctx.Customers 是一个 ObjectSet,不适用于 Dynamic Linq。
但是,只要你使用 .Contains() 之类的东西,你就会得到一个 IQueryable,它确实有效。
您还可以显式转换为 IQueryable,如下所示:
ctx.Customers.AsQueryable().Select(...)
关于linq - System.Linq.Dynamic 不适用于 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4810929/