我有三个对象:
艺术家,专辑和曲目。
艺术家存储在List<Artist>
和艺术家对象内,还有艺术家专辑的另一个列表(List<Albums>
)而在相册对象中还有另一个曲目列表(List<Track>
)
你会如何一次选择所有曲目?
有没有办法:
TrackList.AddRange(ArtistList.Albums.Tracks);
到目前为止,我一直这样做:
foreach (Artist artist in artistlist)
{
if (artist.Albums != null)
{
ForEach(Album album in artist.Albums)
{
Context.AddRange(album.Tracks);
}
}
}
答案 0 :(得分:6)
你可以尝试
TrackList.AddRange(
ArtistList.SelectMany(a => a.Albums)
.SelectMany(a => a.Tracks))
或者那种效果。我在SelectMany
上有点生疏,但我相信它可以在这里使用。
我也是
不确定此处是否还需要null
检查。但您可以在Where
之前添加SelectMany
子句。
答案 1 :(得分:1)
可以使用IEnumerable<T>
的{{3}}扩展方法完成。