2011-02-10 100 views
27

我無法理解我的錯誤簡單LINQ和列表錯誤:WhereListIterator`1 [任務]爲鍵入」 System.Collections.Generic.List`1 [任務]'

方法:

public List<Task> GetAllTasks() 
{ 
    var AllTasks = from t in tasks 
        where t.Status.ToString() == "Completed" || t.Status.ToString() == "Pending" 
        select t; 

    return (List<Task>)AllTasks; 
} 

代碼背後:

protected void Page_Load(object sender, EventArgs e) 
{ 
    TaskList tdl = (TaskList)Session["TodoList"]; 
    List<Task> AllTasks = tdl.GetAllTasks(); 
    string str = ""; 

    foreach (Task t in AllTasks) 
    { 
     str += t.ToString() + "<br />"; 
    } 

    LblTasks.Text = str; 

} 

後,我添加任務(AddTask.aspx)我重定向到另一個頁面,以顯示他們,然後我得到的運行時錯誤:

無法投射'WhereListIterator 1[Task]' to type 'System.Collections.Generic.List 1 [任務]'類型的對象。

我的LINQ有什麼問題嗎?我剛纔昨天學到了呵呵。

謝謝。

回答

53

你只需要一個.ToList()直接在查詢上或當你返回它。作爲

var AllTasks = (from t in tasks 
       where t.Status.ToString() == "Completed" || t.Status.ToString() == "Pending" 
       select t).ToList(); 

或者

return AllTasks.ToList(); 
+0

非常感謝!這樣可行。 我明白了ToList()的意思,但是典型的演員怎麼會不起作用呢? – 2011-02-10 05:44:33

相關問題