Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从现有列表创建新列表?_C#_List - Fatal编程技术网

C# 如何从现有列表创建新列表?

C# 如何从现有列表创建新列表?,c#,list,C#,List,我有一张单子 List<Student> class Student{ public string FirstName { get; set; } public string LastName { get; set; } public string School { get; set; } } 列表 班级学生{ 公共字符串名{get;set;} 公共字符串LastName{get;set;} 公共字符串学校{get;set;} } 我想使用上面的列表,创

我有一张单子

List<Student>

class Student{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string School { get; set; }
}
列表
班级学生{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串学校{get;set;}
}
我想使用上面的列表,创建或填充数据到

List<Person>

class Person{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
列表
班主任{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
帮帮我


Thanx

也许最简单的解决方案是从Person继承Student(学生就是Person)

这样,您根本不必复制/转换列表

结果是(在没有IDE的情况下完成):

名单

公共类人物{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
} 
班级学生:人{
公共字符串学校{get;set;}
} 
列表
列表

这应该可以做到

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

如果
学生
之间没有明确的继承关系,您可以使用投影:

List<Student> ls = ...;

List<Person> lp = 
   ls.Select( 
     student => 
        new Person() 
        { 
            FirstName = student.FirstName, 
            LastName = student.LastName 
        } );
列表ls=。。。;
列表lp=
ls.选择(
学生=>
新人()
{ 
FirstName=student.FirstName,
LastName=student.LastName
} );
假设我们有

List<Student> k= new List<Student>();
//add some students here
List<Person> p= k.select(s=>new Person() { FirstName = student.FirstName, LastName = student.LastName });
List k=新列表();
//在这里添加一些学生
列表p=k.select(s=>newperson(){FirstName=student.FirstName,LastName=student.LastName});

保持person类不变

class Person {
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
使
学生
类派生自
个人
,并添加学校属性

class Student : Person {
    public string School { get; set; }
}
您现在可以将
学生
添加到
人员
列表中

var persons = new List<Person>();
persons.Add(new Student());
var persons=新列表();
添加(新学生());

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

 listPerson = (from student in listStudent
                          select new Person
                          {
                              FirstName = student.FirstName,
                              LastName = student.LastName
                          }).ToList<Person>();
listPerson=(来自listStudent中的学生)
选择新人
{
FirstName=student.FirstName,
LastName=student.LastName
}).ToList();

班级
个人
学生
有什么关系吗?+1 linq是这里的方法。。。如果您避免看起来像是
学生
应该继承
 listPerson = (from student in listStudent
                          select new Person
                          {
                              FirstName = student.FirstName,
                              LastName = student.LastName
                          }).ToList<Person>();