web-dev-qa-db-fra.com

Erreur simple LINQ et List: WhereListIterator`1 [Task] 'pour taper' System.Collections.Generic.List`1 [Task] '

J'ai du mal à comprendre mon erreur

Méthode:

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;
}

Code derrière:

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;

}

Après avoir ajouté une tâche (AddTask.aspx), je redirige vers une autre page pour les afficher, puis j'obtiens l'erreur d'exécution:

Impossible de caster un objet de type 'WhereListIterator1[Task]' to type 'System.Collections.Generic.List1 [Tâche] '.

Y a-t-il un problème avec mon LINQ? Je viens d'apprendre hier hehe.

Merci.

36
Ken Ma

Vous avez juste besoin d'une .ToList() directement sur la requête ou lorsque vous la renvoyez. Un péché

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

Ou

return AllTasks.ToList();
67
Anthony Pegram