如何将`List <Student>`转换为`List <string>`?

时间:2019-10-08 18:25:58

标签: c# list linq

我遇到一个错误:

  

System.Collections.Generic.List'StudentsBirthdays.Core.Domain.Student'到System.Collections.Generic.List'string'。我该怎么解决?

public List<string> GetThreeOldestStudents()
{
    List<string> studOld = new List<string>();
    studOld = db.Students.OrderBy(b => b.Birthday).Take(3).ToList();
    return studOld;
}

2 个答案:

答案 0 :(得分:4)

您可以执行此操作。通过Select函数,您可以按任意方式将Student对象转换为另一种类型,例如字符串。在下面,我使用x.Name,但是如果不是,请替换为不动产。

public List<string> GetThreeOldestStudents()
{
    List<string> studOld;
    studOld = db.Students.OrderBy(b => b.Birthday).Take(3).Select(x => x.Name).ToList();
    return studOld;
}

答案 1 :(得分:2)

有两种方法可以执行此操作。无论选择什么,您可能都不需要完整列表。通过更频繁地使用更简单的IEnumerable<T>类型,可以提高程序的内存使用率和性能。

选项1-保留完整的学生对象:

public IEnumerable<Student> GetThreeOldestStudents()
{
    return db.Students.OrderBy(s => s.Birthday).Take(3);
}

选项2-仅是名称

public IEnumerable<string> GetThreeOldestStudents()
{
    return db.Students.OrderBy(s => s.Birthday).Take(3).Select(s => s.Name);
}

无论使用哪种方法,如果您确实需要列表(提示:大多数时候不需要),您都可以随时将ToList()呼叫放在调用方法(var oldest = GetThreeOldestStudents().ToList();)。