1つの方法は、複数のステートメントを持つラムダを使用することです。これがワンライナーと見なすことができるかどうかはわかりません。また、マルチステートメントラムダはあまり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)
。