我正在尝试使用任务调度程序托管包装器获得所有任务,并且有一个例外:
系统。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();
}