Web*_*rix 3 .net c# linq foreach
我有以下场景:
var Ids = object1.GetIds(); // returns IEnumerable<int>
foreach (var id in Ids)
{
foreach (var relatedObject in object1.GetRelatedObjects(id))
{
// Do Something with related object
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想摆脱第一个foreach并将这个逻辑减少为单个foreach.我怎么能实现这个目标?
LINQ表达式是否可以使用类似的方法?
das*_*ght 10
当两个循环之间没有任何内容时,在嵌套的循环之前或之后,您可以使用SelectMany"展平"两个循环为一个循环:
foreach (var relatedObject in Ids.SelectMany(object1.GetRelatedObjects)) {
...
}
Run Code Online (Sandbox Code Playgroud)
这个循环和你拥有的循环之间的一个主要区别id是不再在范围内.假设relatedObject暴露了一个公共Id属性,这在你的情况下不应该是一个问题,因为你可以提取id后面的
var id = relatedObject.Id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |