我遇到一个错误:
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;
}
答案 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();
)。