Как преобразовать `List <Student>` в `List <string>`? - PullRequest
1 голос
/ 08 октября 2019

Я получил ошибку:

System.Collections.Generic.List'StudentsBirthdays.Core.Domain.Student 'to 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 ]

4 голосов
/ 08 октября 2019

Вы можете сделать это. Функция 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 голосов
/ 08 октября 2019

Есть несколько способов сделать это. Независимо от того, что вы выберете, вам, вероятно, не нужен полностью реализованный список . Вы можете улучшить использование памяти и производительность в своих программах, оставаясь с более простым типом 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();).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...