如何在C#中将数组转换为List <object>?


Answers:


105
List<object> list = myArray.Cast<Object>().ToList();

如果数组元素的类型是引用类型,则可以省略,.Cast<object>()因为C#4添加了接口协方差,即IEnumerable<SomeClass>可以将an视为IEnumerable<object>

List<object> list = myArray.ToList<object>();

28
确保您使用的是System.Linq
Nestor Ledon 2013年

这仅适用于VS2015吗?在VS2012下:'System.Array'不包含'Cast'的定义,找不到可以接受类型为'System.Array'的第一个参数的扩展方法'Cast'(您是否缺少using指令或程序集引用? )
ajeh

感谢您List<object> list = myArray.ToList<object>();
samir105 '17

39

使用构造函数: new List<object>(myArray)


2
关于此样式的一件好事是它创建并返回了列表,因此您可以追加更多方法(例如.Contains(userName))。有助于将一堆逻辑挤入一行if语句:)。
Patrick

13

List<object>.AddRange(object[])应该可以。它将避免各种无用的内存分配。您也可以使用Linq,如下所示:object[].Cast<object>().ToList()


10

List <>构造函数可以接受任何实现IEnumerable的内容,因此...

        object[] testArray = new object[] { "blah", "blah2" };
        List<object> testList = new List<object>(testArray);

5
private List<object> ConvertArrayToList(object[] array)
{
  List<object> list = new List<object>();

  foreach(object obj in array)
    list.add(obj);

  return list;
}

3

如果数组项和列表项相同

List<object> list=myArray.ToList();

我必须使用System.Linq添加;为了使它起作用;不知道为什么。
user3752281

2

每个人都说的都是正确的,

int[] aArray = {1,2,3};
List<int> list = aArray.OfType<int> ().ToList();

将aArray变成一个列表,列表。但是,很多注释中缺少的最大事情是,您需要在班级顶部使用这2个using语句

using System.Collections.Generic;
using System.Linq;

我希望这有帮助!


1

您还可以直接使用数组初始化列表:

List<int> mylist= new List<int>(new int[]{6, 1, -5, 4, -2, -3, 9});



0

这是我的版本:

  List<object> list = new List<object>(new object[]{ "test", 0, "hello", 1, "world" });

  foreach(var x in list)
  {
      Console.WriteLine("x: {0}", x);
  }

0

你可以试试看

using System.Linq;
string[] arrString = { "A", "B", "C"};
List<string> listofString = arrString.OfType<string>().ToList();

希望这段代码对您有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.