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/