Cod*_*key 2 c# mapping domain-object dto automapper
我正在尝试使用AutoMapper从包含对象列表的Domain对象进行映射,其中我有一个布尔属性,我想使用AutoMapper用来将该列表拆分为目标对象上的两个目标的属性.
我的基本域看起来像这样(来源)
//Domain object
public class Article
{
public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以我的来源将是IList <Article>
我的观点看起来像这样(目的地)
//DTO
public class ViewAllArticles
{
public IList<ViewArticle> ActiveArticles { get; set; }
public ILIst<ViewArticle> InactiveArticles { get; set; }
}
public class ViewArticle
{
public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
想要映射
//wanted mapping code (source to destination)
Mapper.Map<IList<Article>, ViewAllArticles>(collectionOfAllArticles)
Run Code Online (Sandbox Code Playgroud)
其中ActiveArticles仅包含具有"IsActive = true"的文章,反之亦然包含InactiveArticles.
希望你们中的一个可以帮助我开始做这种映射,我觉得非常有用.
提前致谢.
你可以这样做
internal class StartNewDemo
{
public static void Main(string[] args)
{
Mapper.CreateMap<IList<Article>, ViewAllArticles>()
.ForMember(map => map.ActiveArticles, opt => opt.MapFrom(x => x.Where(y => y.IsActive)))
.ForMember(map => map.InactiveArticles, opt => opt.MapFrom(x => x.Where(y => !y.IsActive)));
var list = new List<Article>() { new Article { IsActive=true }, new Article { IsActive = false } };
var result = Mapper.Map<List<Article>, ViewAllArticles>( list );
}
}
Run Code Online (Sandbox Code Playgroud)