There are several ways to compare IEnumerable<Source>with IEnumerable<Target>. I will show the three most convenient.
As an example, as an AdventureWorks (2008R2) database, I defined three DTO classes:
class ProductModelDto
{
public string Name { get; set; }
public IEnumerable<ProductDto> Products { get; set; }
}
class ProductDto
{
public string Name { get; set; }
public string Number { get; set; }
public IEnumerable<ProductReviewDto> ProductReviews { get; set; }
}
class ProductReviewDto
{
public string ReviewerName { get; set; }
public string Email { get; set; }
}
Here is the only mapping I defined:
Mapper.CreateMap<ProductModel, ProductModelDto>();
Mapper.CreateMap<Product, ProductDto>()
.ForMember(dto => dto.Number, m => m.MapFrom(p => p.ProductNumber));
Mapper.CreateMap<ProductReview, ProductReviewDto>()
.ForMember(dto => dto.Email, m => m.MapFrom(pr => pr.EmailAddress));
Just a request:
var query = db.ProductModels.Where(pm => pm.ProductModelID == 64);
, , ProductModel IEnumerable<ProductModelDto> :
1. query.Select(Mapper.Map<ProductModelDto>)
2. Mapper.Map<List<ProductModelDto>>(query)
3. query.ProjectTo<ProductModelDto>() (Project().To<> prior to v. 4.1.0)
ToList(), IEnumerable List.
:
- HL Mountain Pedal
- HL Mountain Pedal; PD-M562
- David; david@graphicdesigninstitute.com
- Jill; jill@margiestravel.com
, AutoMapper IEnumerable s. , . , , .
3 - . IQueryable , - IQueryable. , , SQL, , . , DTOs , . Linq-to SQL, , 3 ( 1 2).