首页 新闻 搜索 专区 学院

这些LINQ的内部报错怎么办

0
[待解决问题]

比如:.Count()
System.IndexOutOfRangeException: 索引超出了数组界限。

在 System.Collections.Generic.List`1.Enumerator.MoveNext()

在 System.Linq.Enumerable.CountTSource

比如:.Find()
System.IndexOutOfRangeException: 索引超出了数组界限。

在 System.Collections.Generic.List1.Find(Predicate1 match)

比如:.Where()
System.InvalidOperationException: 集合已修改;可能无法执行枚举操作。

在 System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)

在 System.Collections.Generic.List`1.Enumerator.MoveNextRare()

在 System.Linq.Enumerable.WhereListIterator`1.MoveNext()

但是F12进去没有这种异常的说明,比如Count()的
只有
// 异常:
// T:System.ArgumentNullException:
// source 或 predicate 为 null。
//
// T:System.OverflowException:
// source 中的元素数量大于 System.Int32.MaxValue。

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:50
提问于:2018-09-06 09:14
< >
分享
所有回答(4)
0

检查代码,"索引超出了数组界限"是因为返回的列表为空

dudu | 园豆:38801 (高人七级) | 2018-09-06 10:10
0

你一边修改迭代器,一边读取不出错就怪了。简单粗暴点对你最合适 —— 整个操作lock起来。

花飘水流兮 | 园豆:11775 (专家六级) | 2018-09-06 11:48
0

重点

读取和修改你要分开来

Smile丶品位 | 园豆:208 (菜鸟二级) | 2018-09-06 16:15
0

首先这是你做多线程并发造成的。多个地方同时操作了集合。
修改方法就是在使用集合时读写分离或复制映射。也可以用数组索引的方式调用。

中文代码 | 园豆:951 (小虾三级) | 2018-09-07 14:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册