我正在尝试使用此处发布的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'无法解析为有效的类型构造函数或函数。,靠近函数,方法或类型构造函数
如果我使用Linq2Sql而不是Linq2Entities,它的效果非常好。
我在这里缺少什么?
答案 0 :(得分:2)
如果有其他人像我一样碰到这个:
ctx.Customers是一个ObjectSet,它不适用于Dynamic Linq。
然而,只要你抛出像.Contains()这样的东西,你就会得到一个IQueryable,它可以工作。
您也可以明确地转换为IQueryable,如下所示:
ctx.Customers.AsQueryable().Select(...)
答案 1 :(得分:0)