web-dev-qa-db-ja.com

単純なLINQおよびリストエラー:「System.Collections.Generic.List`1 [Task]」と入力するWhereListIterator`1 [Task]」

エラーを理解できません

方法:

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)を追加した後、別のページにリダイレクトしてそれらを表示すると、ランタイムエラーが発生します。

タイプ「WhereListIterator1[Task]' to type 'System.Collections.Generic.List1 [Task]」のオブジェクトをキャストできません。

LINQに問題がありますか?私は昨日heheを学びました。

ありがとう。

36
Ken Ma

.ToList()が必要なのは、クエリで直接、またはクエリを返すときだけです。のように

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

または

return AllTasks.ToList();
67
Anthony Pegram