我有两个嵌套的 foreach 循环:
foreach (var item in appArray)
{
if (item.Value == "True")
{
foreach (var pair in appSeedData)
{
if (item.Key.Contains(pair.Key))
pair.Value();
}
}
}
可以使用 LINQ 执行相同的代码吗?或者以最简单的方式?
最佳答案
从技术上讲,您可以放置一个 Linq 查询:
var actions = appArray
.Where(item => (item.Value == "True")
.SelectMany(item => appSeedData
.Where(pair => item.Key.Contains(pair.Key))
.Select(pair => pair.Value));
然后执行每个(Action
?)值:
foreach (var action in actions)
action();
但我怀疑它是否更具可读性;我建议 Linq 和 foreach
组合:
foreach (var item in appArray.Where(x => x.Value == "True")))
foreach (var pair in appSeedData.Where(p => item.Key.Contains(p.Key)))
pair.Value();
关于c# - 以简单的方式替换嵌套的 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57088837/