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

时间:2015-09-04 05:31:05

标签: c# .net 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

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

SubSubTiers mySubSubTier = allTiers.Select(topTier => 
            topTier.SubTiers.Where(sbTier => sbTier.Id == topTier.SubTierId));

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

IEnumerable<IEnumerable<SubSubTier>>

最好的方法是什么,以便我只获得IEnumerable的{​​{1}}个?{/ p>

1 个答案:

答案 0 :(得分:4)

您可以使用SelectMany代替选择

SubSubTiers mySubSubTier = allTiers.SelectMany(topTier => 
        topTier.SubTiers.Where(sbTier => sbTier.Id == topTier.SubTierId));

它会选择合并IEnumerable而不是IEnumerable的{​​{1}}