我正在尝试使用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();
}
答案 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();
}