2012-03-20 23 views
6

私は私を助けてリストの上に使用し、既存のリストから新しいリストを作成するにはどうすればよいですか?

List<Person> 

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

にそのデータを作成したり、塗りつぶしたいリスト

List<Student> 

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

を持っている...

ありがとう

+0

をクラス 'Person'と' Student'は関係のいくつかの種類がありますか? –

答えて

17

投影を使用することができます:

List<Student> ls = ...; 

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

linqがここに行く方法です...もし 'Student'が' Person'を継承するように見えるという事実を避けるならば。 – Mizipzor

7

たぶん最も簡単な解決策人から学生を受け継ぐことです(学生は人です)。

この方法では、リストをまったくコピー/変換する必要はありません。

結果は(IDEなしで行わ)のようになります。

StudentPersonの間に明示的な継承がない場合はトリックに

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

を行う必要があります一覧

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

Personから派生し、学校のプロパティを追加Studentクラスを作成します。

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

あなたは今Person秒のリストにStudentを追加することができます。

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>(); 
関連する問題