序列不包含任何元素.枚举窗口任务



我正在尝试使用任务调度程序托管包装器获得所有任务,并且有一个例外:

系统。InvalidOperationException: Sequence不包含任何元素in System.Linq.Enumerable.Last [TSource] (IEnumerable ' 1 source)

in line

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

初始化task_list,但未向其添加任何项。然后您尝试在foreach循环中获取列表的最后一项,但是没有项,这就是为什么会出现此异常。

如果没有最后一个元素,您可以使用LastOrDefault来获得null,但我认为您需要至少添加一个项目到task_list

您在任何时候都没有向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();
}

最新更新