【发布时间】:2014-01-16 19:13:09
【问题描述】:
我已经声明了以下结构:
List<List<Service.Field>> out = new List<List<Service.Field>>();
List<List<Service.Field>> tempOut = new List<List<Service.Field>>();
tempOut.Add(method.ReturnFields);
out.AddRange(tempOut);
当我这样做时:
out = out.OrderByDescending(a => (DateTime)a[1].Value).ToList();
我收到一个错误:
进程中的异常 (processName) 异常类型: System.ArgumentOutOfRangeException,异常消息:索引超出 范围。必须是非负数且小于集合的大小。 参数名称:索引,
在此操作之前,我检查并退出。OrderByDescending(a => (DateTime)a[1].Value) 不为空。
知道为什么投射会返回此消息吗?
【问题讨论】:
-
可能在您的
out集合中的子列表中没有任何项目,它适用于第一个项目,但对另一个项目失败? -
您必须检查 a 是否有 2 项或更多 a 不为 null 并不意味着拥有更多项,a[1] 您检查第二项
-
这是一个不起作用的示例小提琴 - dotnetfiddle.net/sg15ff 因为第三个项目中没有任何子时间。
-
@SergeyLitvinov 谢谢!你说的对!现在我知道问题出在哪里了。谢谢!