如何从现有列表创建新列表?

时间:2012-03-20 10:58:18

标签: c# list

我有一个清单

List<Student>

class Student{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string School { get; set; }
}

我想使用上面的列表并将该数据创建或填充到

List<Person>

class Person{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

帮帮我......

感谢名单

6 个答案:

答案 0 :(得分:20)

应该做的伎俩

List<Person> persons = students.Select(student => new Person {FirstName = student.FirstName, LastName = student.LastName}).ToList();

答案 1 :(得分:7)

也许最简单的解决方案是继承学生来自人(学生是一个人)。

这样您就不必复制/转换列表了。

结果类似于(没有IDE完成):

列表

public class Person{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

class Student : Person{ 
    public string School { get; set; } 
} 

List<Student> ... 

List<Person> ...

答案 2 :(得分:3)

如果StudentPerson之间没有明确的继承,您可以使用投影:

List<Student> ls = ...;

List<Person> lp = 
   ls.Select( 
     student => 
        new Person() 
        { 
            FirstName = student.FirstName, 
            LastName = student.LastName 
        } );

答案 3 :(得分:1)

假设我们有

List<Student> k= new List<Student>();
//add some students here
List<Person> p= k.select(s=>new Person() { FirstName = student.FirstName, LastName = student.LastName });

答案 4 :(得分:1)

按原样保持人员课程。

class Person {
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

使Student类派生自Person并添加School属性。

class Student : Person {
    public string School { get; set; }
}

现在,您可以将Student添加到Person s的列表中。

var persons = new List<Person>();
persons.Add(new Student());

答案 5 :(得分:1)

您可以按照以下方式将数据填充到另一个列表中:

 listPerson = (from student in listStudent
                          select new Person
                          {
                              FirstName = student.FirstName,
                              LastName = student.LastName
                          }).ToList<Person>();