Нифига не понял из того, что вы хотите.
Вытащил запрос из истории изменений, немного поправил
await _context.A.Include(a => a.B)
.ThenInclude(a => a.C)
.Where(a => a.Id == 1)
.Select(a => new ADto
{
Id = a.Id,
C = a.C.Select(c => new CDto { Id = c.Id, Name = c.Name}).ToList(),
B = new BDto { Id = a.B.Id, Name = a.B.Name }
})
.SingleAsync();
Я так понял, вы хотите рекурсивно смаппить значения из листа B.A - это очень плохая идея и я бы посоветовал ещё подумать, как можно обойтись без этого (например можно реализовать Lazy loading и выдавать клиенту значение этого листа только тогда, когда клиент раскрывает какой-нибудь список)