代码之家  ›  专栏  ›  技术社区  ›  Lovethenakedgun

LINQ查询:从一组对象聚合子集

  •  0
  • Lovethenakedgun  · 技术社区  · 6 年前

    ArtGallery 包含一组 Exhibits ,每个包含一组 Artworks ,如何构造LINQ查询以返回包含所有 美术馆 .

    我可以不用LINQ通过以下方式完成:

    Set<Artwork> artworkSet = null;
        foreach (var exhib in ArtGallery.Exhibits)
            foreach (var art in exhib.Artworks)
                artworkSet.Add(art);
    

    只是想知道有没有更优雅一点的

    2 回复  |  直到 6 年前
        1
  •  1
  •   Dmitry Korolev    6 年前

    SelectMany将每个展品投影到一个艺术作品集合中,然后将所有集合展平为一个:

    var artworkSet = ArtGallery.Exhibits.SelectMany(x => x.Artworks);
    
        2
  •  1
  •   Maharajan    6 年前

    artworks.Exhibits.SelectMany(x => x.ArtWorks).ToList();