我有以下场景:
var Ids = object1.GetIds(); // returns IEnumerable<int>
foreach (var id in Ids)
{
foreach (var relatedObject in object1.GetRelatedObjects(id))
{
// Do Something with related object
}
}
在这种情况下,我想摆脱第一个 foreach 并将此逻辑简化为单个 foreach。我怎样才能做到这一点?
LINQ 表达式是否可以使用类似的方法?
当两个循环之间没有任何内容时,在嵌套循环之前或之后,您可以使用SelectMany
将两个循环“压平”为一个:
foreach (var relatedObject in Ids.SelectMany(object1.GetRelatedObjects)) {
...
}
该循环与您拥有的循环之间的一个主要区别是id
不再在范围内。假如说relatedObject
暴露公众Id
属性,这在您的情况下应该不是问题,因为您可以提取id
回来与
var id = relatedObject.Id;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)