如何在IEnumerable中添加item

本文关键字:添加 item IEnumerable | 更新日期: 2023-09-27 18:07:51

我有这个代码,我想在列表中添加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);

我无法添加项目

如何在IEnumerable中添加item

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

关于添加,您不能向IEnumerable<T>添加项目。这完全取决于你想用你的代码做什么,但是为什么你使用IEnumerable<SelectListItem>而不是IList<SelectListItem>,它有一个Add()的操作。由于IList<T> 是-a IEnumerable<T>,您将能够将note传递给任何期望IEnumerable<T>的方法。

当你说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)
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();