2010-01-28 113 views
3

如果我創建瞭如下所示的Linq語句,它工作正常。創建Linq語句來創建對象

var Jobs = from a in ctx.MyExport 
      select new 
      { 
       FileName = a.FilePath, 
       JobId = a.ID, 
      }; 

如果我想使用一個類,而不是匿名類型,我得到以下錯誤「無法轉換lambda表達式到類型‘串’,因爲它不是一個委託類型」。

這是我想要的工作代碼:

var Jobs = from a in ctx.MyExport 
      select new MyClass 
      { 
       FileName = a.FilePath, 
       JobId = a.ID, 
      }; 

這裏是類:

public class MyClass 
{ 
    public string FileName { get; set; } 
    public Guid JobId { get; set; } 
} 

誰能告訴我什麼,我做錯了,如何解決呢?

+0

我通過用IEnumerable替換「var」來修復問題 Retrocoder 2010-01-28 12:06:50

回答

1

上述代碼是正確的,由於您沒有向我們展示過的代碼,您將收到錯誤消息。

您試圖將未實現的查詢分配給會導致錯誤的字符串變量。 將類型更改爲IEnumerable將立即實現查詢,無論您是否使用該查詢,它都將從數據庫中取出。因此,不推薦此解決方案。

答案是兌現之前使用的查詢,我認爲你是在這個集合做的foreach,所以Jobs.AsEnumerable()Jobs.ToList()(取決於你想要什麼與它做)是你應該做的。