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