Mapping со сложной структурой?

Здравствуйте! Есть три модели.
public class User
    {
        public User()
        {
            this.Accounts = new HashSet<Account>();
        }
        public int Id { get; set; }
        public string TelegramUserId { get; set; }
        public virtual ICollection<Account> Accounts { get; set; }
    }


public class Account
    {
        public Account()
        {
            this.Items = new HashSet<MyItems>();
        }
        public int Id { get; set; }
        public string SteamId { get; set; } = null!;
        public User? User { get; set; }
        public virtual ICollection<MyItems> Items { get; set; }
    }


public class MyItems
    {
        public int Id { get; set; }
        public string MarketHashName { get; set; } = null!;
        public int AccountId { get; set; }
        public Account? Account { get; set; } 
    }


Хочу их смаппить с этим дто
public class AllUserDataDto
    {
        public string TelegramUserIdDto { get; set; } = null!;
        public List<Steam> Steam { get; set; } = new();
    }

    public class Steam
    {
        public string SteamIdDto { get; set; } = null!;
        public List<Skin> Skins { get; set; } = new();
    }

    public class Skin
    {
        public string NameDto { get; set; } = null!;
    }


для начала сделал так, но никак не могу понять как мне достичь namedto ? хочу смаппить markethashname с NameDto
CreateMap<User, AllUserDataDto>()
                .ForMember(s => s.TelegramUserIdDto, opt => opt.MapFrom(r => r.TelegramUserId))
                .ForMember(s => s.Steam, v => v.MapFrom(t => t.Accounts.Select(a => new Steam { SteamIdDto = a.SteamId })))
                .ForMember(s=> s.Steam.Select(a=> new Skin { }), v=>v.MapFrom(r=>r.Accounts.Select(g=> new Skin { NameDto = r.MarketHashName })))
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
User user = null!;
var userDto = new AllUserDataDto {
  TelegramUserIdDto = user.TelegramUserId,
  Steam = user.Accounts.Select(x => 
      new Steam {
        SteamIdDto = x.SteamId,
        Skins =  x.Items.Select(i=> new Skin { NameDto = i.MarketHashName  }
    })
    .ToList()
};


Кстати, а какой сакральный смысл в добавлении суффиксов Dto к именам свойств?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы