c# - 选择列表中的所有对象

标签 c# list

我有三个对象:

Artist, Albums and Track.

艺术家存储在 List<Artist> 中在 Artist 对象中还有另一个艺术家专辑列表 (List<Albums>) 在 Album 对象中还有另一个轨道列表 (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);
       }
     }
   }

最佳答案

你可以试试

TrackList.AddRange(
  ArtistList.SelectMany(a => a.Albums)
            .SelectMany(a => a.Tracks))

或者类似的东西。我对 SelectMany 有点生疏,但我相信它可以在这里使用。

我也是 不确定这里是否也需要您的 null 检查。但是您可以在 SelectMany 之前添加一个 Where 子句。

关于c# - 选择列表中的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22481879/

相关文章:

c# - 无法使用集合初始值设定项初始化类型 'SelectListItem',因为它未实现 'System.Collections.IEnumerable'

c# - 跨多个域的 ASP.NET session

python - 编辑列表,同时将其与另一个列表作为约束进行比较

list - 将列表与 AutoBean 一起使用

c# - RDotNet.dll 中发生类型为 'System.StackOverflowException' 的未处理异常

c# - 将时差与固定周期进行比较

c# - 转换为十进制时出现 "Value was either too large or too small for a Decimal"错误

python - 如何在 python 中将单词插入列表?

python - 在列表的每个元素之前插入一个元素

java - 在 Java 中多次获取集合的第 n 个元素