今天我正在将我的对象映射到DTO。
public IEnumerable<ArticleDTO> GetArticlesBasedOnCategorySection(int catSection, int headCategoryID, string customerREFID)
{
return _articleRepository.GetArticlesByCategory(catSection, headCategoryID, customerREFID).Select(a => Mapper.ToDTO(a)).ToList();
}
但是在变量中我有另一个列表,我想以类似的方式映射。
是否可以将这一切写在这样的一行中,或者我是否必须编写foreach
循环然后映射a.List。
答案 0 :(得分:1)
如何在匿名对象中返回文章及其项目?
public IEnumerable<ArticleDTO> GetArticlesBasedOnCategorySection(int catSection, int headCategoryID, string customerREFID)
{
return _articleRepository
.GetArticlesByCategory(catSection, headCategoryID, customerREFID)
.Select(a => new
{
Article = Mapper.ToDTO(a),
Items = a.Items.Select(b => Mapper.ToDTO(b)).ToList()
})
.ToList();
}
答案 1 :(得分:0)
一种方法是使用具有多个语句的lambda。我不确定这是否可以被认为是一个单行,并且多语句lambda不是非常LINQ-y。
public IEnumerable<ArticleDTO> GetArticlesBasedOnCategorySection(int catSection, int headCategoryID, string customerREFID)
{
return _articleRepository
.GetArticlesByCategory(catSection, headCategoryID, customerREFID)
.Select(a =>
{
ArticleDTO article = Mapper.ToDTO(a);
article.Items = a.Items.Select(b => Mapper.ToDTO(b)).ToList();
return article;
})
.ToList();
}
如果ArticleDTO有一个复制构造函数,你可以这样写:
public IEnumerable<ArticleDTO> GetArticlesBasedOnCategorySection(int catSection, int headCategoryID, string customerREFID)
{
return _articleRepository
.GetArticlesByCategory(catSection, headCategoryID, customerREFID)
.Select(a => new ArticleDTO(Mapper.ToDTO(a))
{
Items = a.Items.Select(b => Mapper.ToDTO(b)).ToList()
})
.ToList();
}
您还可以在构造函数中或Mapper.ToDTO(a)
中映射项目。