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

C# LINQ查询:从一组对象聚合子集,c#,linq,C#,Linq,如果我有一个ArtGallery对象,其中包含一组展品,每个展品都包含一组艺术品,我将如何构造LINQ查询以返回一个包含ArtGallery中所有艺术品的集合 我可以在没有LINQ的情况下通过以下方式完成: Set<Artwork> artworkSet = null; foreach (var exhib in ArtGallery.Exhibits) foreach (var art in exhib.Artworks) artwo

如果我有一个
ArtGallery
对象,其中包含一组
展品
,每个展品都包含一组
艺术品
,我将如何构造LINQ查询以返回一个包含
ArtGallery
中所有
艺术品
的集合

我可以在没有LINQ的情况下通过以下方式完成:

Set<Artwork> artworkSet = null;
    foreach (var exhib in ArtGallery.Exhibits)
        foreach (var art in exhib.Artworks)
            artworkSet.Add(art);
Set artworkSet=null;
foreach(艺术画廊中的var展览。展品)
foreach(展览艺术品中的var艺术)
艺术作品集。添加(艺术);

只是想知道是否有更优雅一点的东西

您可以使用linq来获得它

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

您可以使用linq来获取它

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

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

var artworkSet = ArtGallery.Exhibits.SelectMany(x => x.Artworks);

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

var artworkSet = ArtGallery.Exhibits.SelectMany(x => x.Artworks);

你应该写下你尝试过的方法。我们在这里帮助您发现代码中的问题,而不是为您编写代码。这样对你来说会更容易。请不要误会我。你应该写下你尝试过的方法。我们在这里帮助您发现代码中的问题,而不是为您编写代码。这样对你来说会更容易。请不要误会我。