C# 如何使用linq基于值获取子对象?

C# 如何使用linq基于值获取子对象?,c#,.net,linq,lambda,C#,.net,Linq,Lambda,预期的最终结果是得到一个IEnumerable,其中1.2、2.3、3.1、4.2表示每个子层的子层ID Top Tier Object SubTier Objects SubSubTier Objects 1.1,1.2,1.3 : SubTierId = 2 SubSubTier Objects 2.1,2.2,1.3 : SubTierId = 3 SubTier Objects Sub

预期的最终结果是得到一个IEnumerable,其中1.2、2.3、3.1、4.2表示每个子层的子层ID

Top Tier Object
        SubTier Objects
            SubSubTier Objects 1.1,1.2,1.3 : SubTierId = 2
            SubSubTier Objects 2.1,2.2,1.3 : SubTierId = 3
        SubTier Objects
            SubSubTier Objects 3.1,3.2,3.3 : SubTierId = 1
            SubSubTier Objects 4.1,4.2,4.3 : SubTierId = 2
但是我得到了这个返回类型

SubSubTiers mySubSubTier = allTiers.Select(topTier => 
            topTier.SubTiers.Where(sbTier => sbTier.Id == topTier.SubTierId));
IEnumerable
最好的方法是什么,以便我只获得
子层的单个
IEnumerable

您可以使用而不是选择

IEnumerable<IEnumerable<SubSubTier>>

它会将子项选择为组合的
IEnumerable
而不是
IEnumerable
IEnumerable

您可以使用SelectMany而不是SelectMany。我的答案有用吗?你还有其他问题吗?是的,那是个骗局,只是没有马上回来。非常感谢!:)
SubSubTiers mySubSubTier = allTiers.SelectMany(topTier => 
        topTier.SubTiers.Where(sbTier => sbTier.Id == topTier.SubTierId));