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)
是什么使我只是得到一个最好的办法IEnumerable
的SubSubTier
?
您可以使用SelectMany代替 Select
SubSubTiers mySubSubTier = allTiers.SelectMany(topTier =>
topTier.SubTiers.Where(sbTier => sbTier.Id == topTier.SubTierId));
Run Code Online (Sandbox Code Playgroud)
它将选择子层进行组合IEnumerable
而IEnumerable
不是IEnumerables