2012-03-20 18 views
6

Tengo una lista¿Cómo puedo crear una nueva lista de la lista existente?

List<Student> 

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

quiero usar la lista anterior y crear o llenar esos datos en

List<Person> 

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

Ayúdame ..

Gracias

+0

hace clase '' Person' y Student' tienen algún tipo de relación? –

Respuesta

17

Que debe hacer el truco

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

+1 linq es el camino a seguir aquí ... si evita el hecho de que parece que 'Student' debe heredar' Persona'. – Mizipzor

7

Tal vez la solución más fácil es heredar Estudiante de Persona (un estudiante ES una persona).

De esta manera no tiene que copiar/convertir la lista en absoluto.

El resultado sería algo así como (hecho sin IDE):

Lista

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

Si no hay herencia explícita entre Student y Person puede usar una proyección:

List<Student> ls = ...; 

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

Digamos que tenemos

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

mantener a la clase persona como se muestran.

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

hacer que la clase Student derivan de Person y añadir la propiedad escolar.

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

Ahora puede añadir un Student a una lista de Person s.

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

Usted puede llenar los datos en otra lista siguiente manera:

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