2013-01-31 102 views
3

我想將查詢的結果返回到List對象,但是,正如我通常使用的,下面的代碼不起作用。 Linq還是比較新的,有人可以解釋正確的語法/發生了什麼?如果我改變的productTraining的數據類型var這將工作...將Linq查詢結果返回到列表對象

List<AgentProductTraining> productTraining = new List<AgentProductTraining>(); 

productTraining = from records in db.CourseToProduct 
        where records.CourseCode == course.CourseCode 
        select records; 

回答

12

Select()Where()將返回IQueryable<T>,不List<T>。你必須將它轉換爲List<T> - 它實際上執行查詢(而不是僅僅準備它)。

你只需要在查詢結束時調用ToList()。例如:

// There's no need to declare the variable separately... 
List<AgentProductTraining> productTraining = (from records in db.CourseToProduct 
               where records.CourseCode == course.CourseCode 
               select records).ToList(); 

個人而言,我不會用一個查詢表達式不過,當你正在做的是一個單一的Where條款:

// Changed to var just for convenience - the type is still List<AgentProductTraining> 
var productTraining = db.CourseToProduct 
         .Where(records => records.CourseCode == course.CourseCode) 
         .ToList();