2012-03-20 13 views
6

Mam listęJak mogę utworzyć nową listę z istniejącej listy?

List<Student> 

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

chcę użyć powyżej listy i utworzyć lub wypełnić te dane do

List<Person> 

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

Pomóż mi ..

Thanx

+0

ma klasa '' Student' Person' i mieć jakąś relacji? –

Odpowiedz

17

To powinno załatwić sprawę

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

+1 linq jest sposobem, aby przejść tutaj ... jeśli unikniesz tego, że wygląda na to, że 'Student' powinien odziedziczyć' Osobę'. – Mizipzor

7

Być może najprostszym rozwiązaniem jest dziedziczenie Ucznia od Osoby (uczeń JEST osobą).

W ten sposób nie trzeba w ogóle kopiować/konwertować listy.

Efektem byłoby coś podobnego (zrobione bez IDE):

listy

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

Jeśli nie ma wyraźnego dziedziczenie między Student i Person możesz użyć rzutowania:

List<Student> ls = ...; 

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

Powiedzmy mamy

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

zachować klasę osoba jak jest.

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

Bądź klasa Student pochodzą z Person i dodać terenie szkoły.

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

Można teraz dodać Student do listy Person s.

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

można wypełnić dane do innej listy poprzez następujący sposób:

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