![]() |
1
24
不能向IEnumerable添加元素,因为它应该是只读的。你最好的选择是:
或
|
![]() |
2
20
IEnumerable的要点是它是一个只读的pull样式集合。如果需要,可以通过执行以下操作来模拟添加:
|
![]() |
3
7
我想指出这里的其他一些答案:IEnumerable不是只读集合,它根本不是集合。它是一个接口,定义如何遍历集合。 如果要添加对象,则应将对象添加到具体的集合类中,或者至少使用其他接口。 |
![]() |
4
6
您可以将它与单例数组连接起来:
|
![]() |
5
4
记住其他人所说的不能真正“添加”到可枚举的,您仍然可以模拟添加。事实上,我认为您可以通过将序列变形为一个实际上“包含”该项的新序列来“添加”该项到序列中(如果您不相信我,只需遍历新序列!). 您还可以将单个项表示为可枚举项,如下所示:
或
然后,您可以将一个项“添加”到可枚举项,如下所示:
您甚至可以按如下顺序将项目插入到其他位置(假设您知道要插入项目的位置):
操作完成后(即操作序列使其“包含”要包含的内容),您可能希望通过ToArray或ToList方法在序列中创建数组或列表:
现在,使用NeWITIMAN插入的是一个包含原始列表中所有期望项目的列表,其中新项目插入中间。 由于每个添加的扩展方法(Take、Skip等)都可能导致序列被多次迭代,因此,在这样的序列上游手好闲(Take、Skip、inserting等)可能会花费您一段时间,但是列表理解语法确实使使用常规迭代。 此外,下面还有一些链接讨论如何将单个项表示为IEnumerable: |
![]() |
6
2
IEnumerable是只读集合,ICollection提供了一个带有Add和Remove的可变集合。 但是,您可以创建一个新的IEnumerable,它包含原始IEnumerable中的所有项和一个新项,方法是连接两个列表:
|
![]() |
7
0
如果在遍历集合时需要更新集合,则需要在启动
|
![]() |
8
0
可能不是您要寻找的答案,但使用泛型集合类似乎总能为我解决此类问题。他们中的大多数人都有一个.Add(T)方法。 |