【问题标题】:populating IEnumerable collection with a List<string> data [closed]用 List<string> 数据填充 IEnumerable 集合
【发布时间】:2013-12-04 09:28:22
【问题描述】:

我有一个统计数据的现有列表

List<string>countries

我想以某种方式循环遍历这些数据并填充以下集合

IEnumerable<SelectListItem> Countries

我该怎么做呢?

【问题讨论】:

  • 你不能。 IEnumerable 仅用于枚举。当你想添加一些东西时,你需要一个允许添加的实例或接口。
  • 你的SelectListItem定义是什么?
  • @AndreiV 可能是System.Web.Mvc.SelectListItem
  • @JeppeStigNielsen,要点。尽管如此,它还是有点模棱两可。如果类型定义已知,答案可能会更具体。
  • @AndreiV 绝对。缺少该信息,因此您的评论是相关的。我的评论只是一个猜测,旨在提供帮助。

标签: c# list ienumerable


【解决方案1】:

我能想到的最简单的方法是使用 Linq 查询:

Countries = countries.Select(country => new SelectListItem {Text = country, Value = country});

但是,您无法将文本与值区分开来。

【讨论】:

  • 选择返回一个 IEnumerable
  • 请注意,这是正确的,但不会“填充”集合。它只是定义了一个 LINQ 查询,每次您使用时都会执行该查询。所以你可能想添加一个ToList(),它返回一个List&lt;SelectListItem&gt;,它也是一个IEnumerable&lt;SelectListItem&gt;
【解决方案2】:

假设这与 mvc 有关...试试这个

IEnumerable<SelectListItem> Countries = countries.Select(c => new SelectListItem { Text = c, Value = c });

【讨论】:

    【解决方案3】:

    我想是这样的。

    IEnumerable<SelectListItem> Countries = countries.Select(c => new SelectListItem
                  {
                      Text = c,
                      Value = c
                  });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多