C#将列表中的对象转换为另一个对象

时间:2010-11-27 20:13:38

标签: c#

是否可以将对象列表分配给另一个将其作为构造函数的对象列表?

例如

public class PersonORM{
    public PersonORM(Person p){ /* convert */ }

    public int PersonId { get; set; }
    /* Other properties here */
}

public class Person{        
    public int PersonId { get; set; }
    /* Other properties here */
}

如果使用构造函数将Person转换为PersonORM,如果它们位于如下列表中:

List<Person> people = getPeople();
List<PersonORM> peopleOrm = new List<Person>(people); // Is something like this possoble?

2 个答案:

答案 0 :(得分:4)

由于List<T>的构造函数不支持它,因此无法使用您拥有的语法。

如果你可以使用linq(取决于你所针对的.Net版本),你可以这样做:

List<PersonORM> personOrm = people.Select(p => new PersonORM(p)).ToList();

这使用Select运算符来执行原始列表中每个项目的转换。

答案 1 :(得分:2)

可以使用LINQ:

完成
List<PersonORM> peopleOrm = new List<Person>(people.Select(p => new PersonORM(p)));