2011-09-24 61 views
1

我使用LINQ到EF我有這樣的:使用IQueryable;不和工作

public IQeuryable<base01> GetData() 
{ 
    var u = this.ObjectContext.base01; 

    IQueryable<base01> u2 = u.OrderBy(o => o.article) 
      .Select(l => new { Id = l.Id, article = l.article, lot = l.lot}) as IQueryable<base01>; 

    return u2; 
} 

基本上,U包含查詢的結果,我期待進行排序和重新排列列。當我用返回來替換返回u2時,我得到了結果集填充的內容,但是當我返回時,我得到一個null。

我沒有看到什麼問題?

謝謝。

回答

3
as IQueryable<base01> 

問題是as - 你是投射到一個匿名類型在查詢不base01 - 所以as將返回null。相反,在你的投影創建base01新實例並刪除as操作:

IQueryable<base01> u2 = u.OrderBy(o => o.article) 
         .Select(l => new base01() 
          { Id = l.Id, article = l.article, lot = l.lot }); 

編輯:

如果u已經是一個IQueryable<base01>base01是你的實體之一,你不需要Select()投影自從你已經有你想要的類型

IQueryable<base01> u2 = u.OrderBy(o => o.article); 
return u2; 
+0

如果我刪除了IQueryable 語句,最後它會出現紅色錯誤,現在有什麼問題? – frenchie

+0

顯示什麼錯誤?我不是心理上的;-)'base01'是什麼類型?將很好顯示的定義 – BrokenGlass

+0

好吧,最初的錯誤是固定的:我添加了新的base01()語句。當我點擊展開鏈接時,我現在正在得到一個空的結果,「實體或複雜類型」base01Model.base01「無法在LINQ to Entities查詢中構造」。 – frenchie

0

你不能用這種方式施放,使用下面的代碼。

IQueryable<base01> u2 = u.OrderBy(o => o.article) 
     .Select(l => new base01 { Id = l.Id, article = l.article, lot = l.lot}); 
+0

好,那就是修復。我現在得到一個空的結果,當我點擊展開鏈接時出現錯誤「實體或複雜類型」base01Model.base01「無法在LINQ to Entities查詢中構建」 – frenchie

+0

我添加了新的base01()語句。當我單擊展開鏈接時,我現在得到一個空的結果,出現錯誤「實體或複雜類型」base01Model.base01「無法在LINQ to Entities查詢中構建」 – frenchie