AutoMapper: Collection to Single string Property
automapper
Solution
You can use the following mapping:
Mapper.CreateMap<Company, CompanyViewModel>()
.ForMember(dest => dest.Services,
m => m.MapFrom(src => string.Join(", ", src.CompanyServices
.Select (s => s.Service.Name))));
But note that you won't be able to use the mapping in an `IQueryable` for LINQ to Entities directly, because EF will throw an exception that it can't convert the `string.Join` part into SQL. You'll have to use `AsEnumerable` and then do the mapping, like:
Mapper.Map<T>(context.Entities.AsEnumerable(). ...)
Problem
I have a scenario in which I have to do following mapping ``` public class Company : BaseEntity { public string Name { get; set; } public virtual ICollection<CompanyService> CompanyServices { get; set; } } public class Service : BaseEntity { public string Name { get; set; } public virtual ICollection<CompanyService> CompanyServices { get; set; } } public class CompanyService : BaseEntity { public long CompanyID { get; set; } public virtual Company Company { get; set; } public long ServiceID { get; set; } public virtual Service Service { get; set; } } ``` And corresponding View Models ``` public class CompanyViewModel : BaseEntity { public string Name { get; set; } public string Services { get; set; } } public class ServiceViewModel : BaseEntity { public string Name { get; set; } } public class CompanyServiceViewModel : BaseEntity { public string ServiceName { get; set; } } ``` I want to Map using AutoMapper in which I should get Service's Name as comma separated string in CompanyViewModel class ``` Mapper.CreateMap<Company, CompanyViewModel>(); ```