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

预期的最终结果是获得一个具有1.2、2.3、3.1、4.2的IEnumerable,该IEnumerable表示每个subTier的SubTierId。
SubSubTiers mySubSubTier = allTiers.Select(topTier =>
            topTier.SubTiers.Where(sbTier => sbTier.Id == topTier.SubTierId));

但是发生了什么事,我得到了这种返回类型。
IEnumerable<IEnumerable<SubSubTier>>

什么是最好的方式,以便我只获得IEnumerable的一个SubSubTier

最佳答案

您可以使用SelectMany代替Select

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

它将选择子层合并到IEnumerable中,而不是IEnumerable中的IEnumerables

关于c# - 如何使用linq根据值获取Sub对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32390720/

10-08 22:46