序列不包含任何元素。枚举Windows任务

时间:2015-08-05 09:24:12

标签: c# linq

我正在尝试使用Task Scheduler Managed Wrapper获取所有任务, 并有一个例外:

  

System.InvalidOperationException:Sequence不包含任何元素   在System.Linq.Enumerable.Last [TSource](IEnumerable`1 source)

在行

  

task_list.Last()[“xml”] = task.Definition.RegistrationInfo.Description

public string GetAllTask()
{
    var jsonSerialiser = new JavaScriptSerializer();

    List<Dictionary<string, object>> task_list = new List<Dictionary<string, object>>();
    TaskService ts = new TaskService();
    TaskFolder fld = ts.GetFolder("WS");

    foreach (Task task in fld.Tasks)
    {
        task_list.Last()["xml"] = task.Definition.RegistrationInfo.Description;
    }

    var ser_task_list = jsonSerialiser.Serialize(task_list);

    return ser_task_list.ToString();
}

2 个答案:

答案 0 :(得分:0)

您初始化task_list但不添加任何项目。然后,您尝试在foreach循环中获取列表的最后一项,但没有项目是您获得此异常的原因。

如果tere不是最后一个元素,您可以使用LastOrDefault获取null,但我认为您需要将至少一个项目添加到task_list

答案 1 :(得分:0)

您不会在任何时候向task_list添加任何内容。为什么期望task_list.Last()成功?

您的代码应该如下所示:

public string GetAllTask()
{
    var jsonSerialiser = new JavaScriptSerializer();

    List<Dictionary<string, object>> task_list = new List<Dictionary<string, object>>();
    TaskService ts = new TaskService();
    TaskFolder fld = ts.GetFolder("WS");
    foreach (Task task in fld.Tasks)
    {
            task_list.Add(new Dictionary<string, object>());
            //[Populate your new Dictionary object here]
            task_list.Last()["xml"] = task.Definition.RegistrationInfo.Description;
    }
    var ser_task_list = jsonSerialiser.Serialize(task_list);
    return ser_task_list.ToString();
}