У меня есть этот класс проекта:
public class Project
{
public int Id { get; set; }
public int? ParentId { get; set; }
public List<Project> ChildProjects { get; set; }
// more properties
}
Это моя попытка загрузить всех потомков любого данного проекта:
private async Task<List<Project>> LoadDescendantsOf(Project project)
{
project.ChildProjects = await db.Projects
.Where(p => p.ParentId == project.Id)
.ToListAsync();
foreach (Project childProject in project.ChildProjects)
{
yield return childProject.ChildProjects =
await LoadDescendantsOf(childProject);
}
}
... но это не работает. Сообщение об ошибке, которое я получаю,
Тело «ProjectsController.LoadDescendantsOf(Project)» не может быть блоком итератора, поскольку «Task>» не является типом интерфейса итератора.
Я попытался сделать метод синхронным, но это то же сообщение об ошибке, только без части «Задача».
Как я могу заставить его работать?
IEnumerable<T>
. Итак, вы можете попробовать изменить тип возврата наTask<IEnumerable<Project>>
- person Jeroen van Langen   schedule 13.10.2019yield return childProject.ChildProjects = await LoadDescendantsOf(childProject);
как-то странно. - person Jeroen van Langen   schedule 13.10.2019