Мне нужно получить список свойств из вложенного объекта.
Это часть моего кода:
[Table("Articles")]
class Article
{
public Article()
{
ListComplex = new List<ArticlesComplex>();
}
public long Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public virtual ICollection<ArticlesComplex> ListComplex { get; set; }
}
[Table("ArticlesComplex")]
class ArticlesComplex
{
public long ArticleId { get; set; }
public virtual Article Article { get; set; }
public long ComplexId { get; set; }
public virtual Article Complex { get; set; }
}
//***********************
// DTO
//***********************
public class ArticleDTO
{
public ArticleDTO()
{
ListComplex = new List<long>();
ListComplexCodes = new List<string>();
}
public long Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public IEnumerable<long> ListComplex { get; set; }
public IEnumerable<string> ListComplexCodes { get; set; }
}
BD
ARTICLES ARTICLESCOMPLEX
Id | Code | Name | ArticleId | ComplexId
5 | COD_ART_05 | Paper | 7 | 5
6 | COD_ART_06 | Item | 7 | 6
7 | COD_ART_07 | Pendrive |
Создайте отображение:
mapper.CreateMap<Article, ArticleDTO>().ForMember(m => m.ListComplex, m => m.MapFrom(y => y.ListComplex.Select(x => x.Complex.Id).ToList()))
.ForMember(m => m.ListComplexCodes, m => m.MapFrom(y => y.ListComplex.Select(x => x.Complex.Codigo).ToList()))
Наконец, я получаю результат:
var dbWhere = DbContext.Articles.Where(x => x.Codigo == "COD_ART_07");
var list = await dbWhere.ProjectTo<ArticleDTO>(null, "ListComplex").ToListAsync();
// list.ListComplex (2) -> 5,6
// list.ListComplexCodes (0) ???
Мне нужно получить свойство 'Code' в моемcase "COD_ART_05", "COD_ART_06" в поле 'ListComplexCodes'.
Может ли кто-нибудь помочь мне с этим?
Спасибо.