2011-01-26 58 views
2

我試圖使用LINQ動態查詢庫張貼在這裏 - http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspxSystem.Linq.Dynamic不工作的實體框架

它應該爲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<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,它可以很好地工作。

我在這裏錯過了什麼?

+0

是否使用代碼優先? – 2011-01-26 23:26:12

回答

2

萬一別人遇到這種像我一樣:

ctx.Customers是一個對象集,這不適用於Dynamic Linq。然而,只要你拋出類似.Contains()的東西,你就會得到一個IQueryable,它可以工作。

您也可以明確地轉換爲IQueryable,像這樣:

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