【问题标题】:how to convert an array of objects to list [duplicate]如何将对象数组转换为列表[重复]
【发布时间】:2012-10-18 06:21:44
【问题描述】:

可能重复:
Conversion of System.Array to List

我想将 aPersonDataArr 转换为列表 IList<aPersonDataArr> aPerList = ??? 和反之亦然 - 从列表到数组。怎么会这样,我不愿意用LINQ。还有其他方法吗?

class PersonData
{
    public string PersonName;
    public int Age;
}
class Program
{
    static void Main(string[] args)
    {
        PersonData[] aPersonDataArr = new PersonData[2];

        for (int i = 0; i < aPersonDataArr.Length; i++)
        {
            aPersonDataArr[i].PersonName = "abcd";
            aPersonDataArr[i].Age = 10;
        }    
    }
}

【问题讨论】:

  • 为什么你不愿意使用 LINQ?为什么你首先要创建一个数组,而不是始终使用一个列表?
  • 回答 Jon Skeet,遗留代码。

标签: c#


【解决方案1】:

只需在 List 构造函数中传递数组。

IList<PersonData> aPerList = new List<PersonData>(aPersonDataArr);

转换回来:

PersonData[] array = aPerList.ToArray();

如果您不想使用 LINQ ToArray,请使用 List.CopyTo

PersonData[] newArray = new PersonData[aPerList.Count];
aPerList.CopyTo(arrArray,0);

【讨论】:

  • 技术上 ToArray() 是 LINQ 的一部分。
  • @HenkHolterman,是的,不是,我只是在回答中指定了list.CopyTo
【解决方案2】:

使用 Linq:

PersonData[] aPersonDataArr = new PersonData[2];
List<PersonData> list = aPersonDataArr.ToList();

不使用 Linq:

List<PersonData> list = new List<PersonData>(aPersonDataArr );

【讨论】:

    【解决方案3】:
        //array into list
        List<PersonData> list1 = new List<PersonData>(aPersonDataArr);
    
        //list into array
        Array array1 = list1.ToArray();
    

    【讨论】:

      猜你喜欢
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 2021-09-29
      • 2018-09-12
      • 2018-03-28
      相关资源
      最近更新 更多