【发布时间】:2017-07-17 10:25:01
【问题描述】:
我知道当我迭代一个 IEnumerable 时,我会迭代源集合,所以如果我在 IEnumerable 的下一次迭代中修改了源集合,它会计算修改次数。
所以我想知道当我有一个有序的 IEnumerable 时它会如何影响它。
例如,如果我有这个:
List<MyType> myNoOrderedList //add my items
IEnumerable<MyType> myOrderedIEnumerable = myNoOrderedList
.OrderBy(x => x.Property);
foreach(MyType in myOrderedIEnumerable)
{
//Do something
}
假设我在列表中有 3 个元素,在 IEnumerable 上的每次迭代中,列表是有序的还是只有列表被排序一次?
如果我在“做某事”中添加或删除项目会怎样? IEnumerable 有初始订购项目还是必须再次订购才能考虑到列表的修改?
【问题讨论】:
-
AFAIK LINQ 生成的枚举每次都会被重新枚举,所以如果你修改基本列表并迭代顺序仍然是正确的。但是,自己检查一下是微不足道的。
-
只需运行代码并自行检查 - 会比在这里询问要快得多;)
-
如果我在“做某事”中添加或删除一个项目会发生什么? - 运行它时你会得到非常快的答案 - 格式为异常
标签: c# ienumerable