【问题标题】:How to add Items in IEnumerable?如何在 IEnumerable 中添加项目?
【发布时间】:2014-07-29 04:34:05
【问题描述】:

我有这段代码,我想在列表中添加项目,我正在这样做。

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

我无法添加项目。

【问题讨论】:

  • 我们更喜欢正确的编译代码(包括;)

标签: c#


【解决方案1】:

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

至于添加,您不能将项目添加到IEnumerable&lt;T&gt;。这完全取决于您尝试处理您的代码,但为什么要使用IEnumerable&lt;SelectListItem&gt; 而不是IList&lt;SelectListItem&gt;,后者具有Add() 操作。由于IList&lt;T&gt; is-a IEnumerable&lt;T&gt;,您将能够将note 传递给任何需要IEnumerable&lt;T&gt; 的方法。

【讨论】:

  • 谢谢安东。我按照你提到的做了,它正在工作。使用 IEnumerable 背后的原因我只是想开箱即用
【解决方案2】:

当您说 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)

【讨论】:

  • 我想让 IEnumerable note = new List() 然后想添加项目。你有什么想法
  • 你为什么要那个?这违背了你说你想做的事,一个 IEnumerable 就是这样,你可以枚举的东西,你不能添加到一个 IEnumerable,IEnumerable 根本不公开这个功能
【解决方案3】:
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();

【讨论】:

  • 那么你可以使用笔记,如果你想使用你的收藏。
  • 我相信你的意思是note.AsEnumerable()。否则无法编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 2011-06-28
  • 2010-11-15
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多