2012-03-20 56 views
6

我有一個列表如何從現有列表創建新列表?

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

幫助我..

感謝名單

+0

不類'Person'和'Student'有某種關係呢? – 2012-03-20 11:00:50

回答

17

這應該做的伎倆

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

+1 linq是去這裏的方法...如果你避免這樣的事實,它看起來像'學生'應該繼承'人'。 – Mizipzor 2012-03-20 11:02:20

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

如果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

保持個人類如。

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

充分利用Student類從Person派生並添加學校財產。

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

現在,您可以添加到StudentPerson的List。

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