如何在IEnumerable中添加项目?

时间:2014-06-08 13:34:19

标签: c#

我有这个代码,我想在列表中添加Item,我就是这样做的。

IEnumerable<SelectListItem> note = new List<SelectListItem>();
var selectList = new SelectListItem
      {
          Text = Convert.ToString(amount.Key), 
          Value Convert.ToString(amount.Value)  
      };
note.ToList().Add(selectList);

我无法添加项目。

4 个答案:

答案 0 :(得分:3)

ToList()调用会创建一个全新的列表,该列表未连接到原始列表。您对新列表所做的任何更改都不会传播回原始列表。

至于添加,您无法向IEnumerable<T>添加项目。这完全取决于您尝试使用代码,但为什么使用IEnumerable<SelectListItem>而不是IList<SelectListItem>,它具有Add()操作。由于IList<T> 是-a IEnumerable<T>,您可以将note传递给任何需要IEnumerable<T>的方法。

答案 1 :(得分:0)

当你说ToList()没有投出它时,它会创建一个全新的列表以及你要添加的内容。

你想要的是避免你开始做的奇怪的演员(记下一个List而不是IEnumerable),然后直接添加到

List<SelectListItem> note = new List<SelectListItem>()
var selectList = new SelectListItem{Text = Convert.ToString(amount.Key), Value Convert.ToString(amount.Value)                }
note.Add(selectList)

这并不意味着这样做但是如果你真的想要将你的列表分配给IEnumerable,那么你可以在以后需要增加的功能时将其转换为:

IEnumerable<SelectListItem> note = new List<SelectListItem>()
var selectList = new SelectListItem{Text = Convert.ToString(amount.Key), Value Convert.ToString(amount.Value)                }
((List<SelectListItem>)note).Add(selectList)

答案 2 :(得分:0)

List<SelectListItem> note = new List<SelectListItem>();
var selectList = new SelectListItem
      {
          Text = Convert.ToString(amount.Key), 
          Value Convert.ToString(amount.Value)  
      };

note.Add(selectList);

var notes = note.AsNumerable();

答案 3 :(得分:-4)

简单的方法是立即使note成为列表:

IEnumerable<SelectListItem> note = new List<SelectListItem>();
...
//note.ToList().Add(selectList)
note.Add(selectList);

但假设您确实需要IEnumerable:

note = note.ToList().Add(selectList);