如何使用linq基于值获取Sub对象?

Mic*_*han 5 .net c# linq lambda

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
Run Code Online (Sandbox Code Playgroud)

预期的最终结果是获得一个IEnumerable,其中包含1.2,2.3,3.1,4.2,它们代表每个子层的SubTierId.

SubSubTiers mySubSubTier = allTiers.Select(topTier => 
            topTier.SubTiers.Where(sbTier => sbTier.Id == topTier.SubTierId));
Run Code Online (Sandbox Code Playgroud)

但是我得到的是这种返回类型.

IEnumerable<IEnumerable<SubSubTier>>
Run Code Online (Sandbox Code Playgroud)

是什么使我只是得到一个最好的办法IEnumerableSubSubTier

Kam*_*ski 4

您可以使用SelectMany代替 Select

SubSubTiers mySubSubTier = allTiers.SelectMany(topTier => 
        topTier.SubTiers.Where(sbTier => sbTier.Id == topTier.SubTierId));
Run Code Online (Sandbox Code Playgroud)

它将选择子层进行组合IEnumerableIEnumerable不是IEnumerables