C# 如何使用linq基于值获取子对象?
预期的最终结果是得到一个IEnumerable,其中1.2、2.3、3.1、4.2表示每个子层的子层IDC# 如何使用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
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));