【问题标题】:How do you create a List<T> from IEnumerable?如何从 IEnumerable 创建 List<T>?
【发布时间】:2011-08-24 14:17:36
【问题描述】:

我有一个返回 IEnumerable 的 DAL 方法。我想要一个业务对象列表,List&lt;Person&gt;。如何从可枚举的返回类型构建列表?当我在 Visual Studio 中检查返回值时,我看到了所有属性。我只需要列出清单。

谢谢!

【问题讨论】:

  • When I inspect the return value in visual studio I see all the properties. 那不是IEnumerable

标签: c# .net .net-4.0


【解决方案1】:

如果IEnumerable 包含已知类型T 的对象,您可以简单地将其“转换”为IEnumerable&lt;T&gt;,然后使用ToList 扩展方法获取列表:

IEnumerable foo; // obviously this needs to have a "real" value
var list = foo.Cast<T>().ToList();

【讨论】:

    【解决方案2】:

    只需使用Enumerable&lt;T&gt;.ToList:

    IEnumerable<T> source = // get data from some source;
    List<T> list = source.ToList();
    

    或者,有一个 overloadList&lt;T&gt; 构造函数采用 IEnumerable&lt;T&gt;

    IEnumerable<T> source = // get data from source;
    List<T> list = new List<T>(source);
    

    List<T> list = new List<T>(// get data from source);
    

    【讨论】:

      【解决方案3】:
      new List<Person>(MyMethod())
      

      【讨论】:

        【解决方案4】:

        您可以在获取结果时使用 .ToList()。像这样:

        List<Person> lstPerson = DAL.GetPersonList().ToList();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-24
          • 1970-01-01
          • 2019-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多