如何将项添加到IEnumerable

时间:2014-04-25 15:14:05

标签: c# collections ienumerable

在C#中

IEnumerable<MyModel> test = _blah.tolist();

现在我可以循环测试,但如何添加项目?

请不要告诉我添加项目没有任何意义,我已经看过那个帖子了。

我想知道的是,如果我循环浏览10个项目,我该如何再添加一个项目,以便循环浏览11个项目?

也没有.Add()方法

3 个答案:

答案 0 :(得分:5)

IEnumerable是一个界面。您无法在IEnumerable上使用Add(),因为他们不需要实施Add()方法。请参阅IEnumerable documentation on MSDN

而是创建一个继承自接口generic listIList。使用IList接口的类型必须实现Add()

List<MyBlahType> test = _blah.tolist();
test.Add(new MyBlahType());

如果您仍想使用界面来避免具体类型,请直接使用IList

IList<MyBlahType> test= _blah.tolist();
test.Add(new MyBlahType());

顺便说一句,通常认为使用下划线启动变量/类型名称并且不使用适当的大写字母时样式很差。 C#中的preferred style是使用PascalCase或camelCase进行大写。

答案 1 :(得分:1)

使用LINQ-to-object的Concat构建一个新的IEnumerable,迭代第一个,然后是第二个:

IEnumerable<MyModel> test = _blah.tolist();
IEnumerable<MyModel> second = new[] { theItem };
IEnumerable<MyModel> elevenItems = test.Concat(second);

答案 2 :(得分:0)

如果您在ToList()上致电IEnumerable<T>,则返回类型将为List<T>。如果您的变量类型为List<T>而不是IEnumerable<T>,您就可以对收到的列表执行任何操作,包括向其添加项目,就像您可以对任何其他列表执行操作一样。请注意,新制作的列表将是&#34;分离的&#34;来自原始IEnumerable<T>,以便在一个中添加,删除,重新排列或替换项目不会影响另一个。但是,请注意,可变引用类型项的列表不包含项,而只是标识它们。如果一个人有IEnumerable<Car> myCars,第三个项目是&#34; Car#24601&#34;,那么myCars.ToList()[2].Color = CarColors.Red;那么原始列表中的第三个项目(即Car#24601)将被涂成红色