数组到列表 - 无法使AddRange(IEnumerable)工作

时间:2009-05-28 20:59:45

标签: c# arrays .net-3.5 list

我对这个天真的问题感到抱歉。我有以下内容:

public Array Values
{
  get;
  set;
}

public List<object> CategoriesToList()
{
  List<object> vals = new List<object>();
  vals.AddRange(this.Values);

    return vals;
}

但这不起作用,因为我无法输入数组。有没有办法轻松修复上面的代码,或者,通常,将System.Collections.Array转换为System.Collections.Generic.List?

4 个答案:

答案 0 :(得分:5)

确保您是using System.Linq;,然后将您的行更改为:

vals.AddRange(this.Values.Cast<object>());

编辑:您也可以迭代数组并单独添加每个项目。

再次编辑:另一种选择,只需将数组转换为object[],然后使用ToList()函数或将其传递给List<object>构造函数:

((object[])this.Values).ToList();

new List<object>((object[])this.Values)

答案 1 :(得分:2)

您可以将您的财产声明更改为此吗? :

public object[] Values { get; set; }

答案 2 :(得分:0)

使用System.Linq; ...

    public object[] Values
    {
        get;
        set;
    }

    public List<object> CategoriesToList()
    {
        List<object> vals = new List<object>();
        vals.AddRange(Values.ToList());

        return vals;
    }

答案 3 :(得分:0)

如果你不想使用linq,你可以简单地演员:

vals.AddRange((IEnumerable<object>) this.Values);