分享
三行代码  ›  专栏  ›  技术社区  ›  black mamba

将list'studentsbirthdays.core.domain.student'转换为list'string' - Convert list'StudentsBirthdays.Core.Domain.Student' to list'string'

  •  1
  • black mamba  · 技术社区  · 1 周前

    我有个错误:

    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;
    }
    
    1 回复  |  直到 1 周前
        1
  •  4
  •   Joel Coehoorn    1 周前

    你可以这么做。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;
    }
    
        2
  •  2
  •   Joel Coehoorn    1 周前

    有几种方法可以做到这一点。不管你选什么, 你可能不需要一个完整的清单 是的。您可以通过使用更简单的 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(); )中。