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

16

我有一个列表。

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; }
}

帮帮我...

谢谢


PersonStudent有某种关联吗? - Rohit Vipin Mathews
6个回答

33

那应该就可以了

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

1
+1 Linq是这里的最佳选择......只要避免Student应该继承Person的事实。 - Mizipzor

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> ...

4
如果StudentPerson之间没有明确的继承关系,您可以使用投影:
List<Student> ls = ...;

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

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 });

1
保留Person类不变。
class Person {
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

Student 类派生自 Person 并添加 School 属性。
class Student : Person {
    public string School { get; set; }
}

现在您可以将一个学生添加到人员列表中。
var persons = new List<Person>();
persons.Add(new Student());

1

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接