一种方法是使用具有多个语句的 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)
.