4es*_*est 2 c# linq foreach loops
我有两个嵌套的foreach循环:
foreach (var item in appArray)
{
if (item.Value == "True")
{
foreach (var pair in appSeedData)
{
if (item.Key.Contains(pair.Key))
pair.Value();
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用LINQ可以执行相同的代码吗?还是以最简单的方式?
从技术上讲,您可以输入Linq查询:
var actions = appArray
.Where(item => (item.Value == "True")
.SelectMany(item => appSeedData
.Where(pair => item.Key.Contains(pair.Key))
.Select(pair => pair.Value));
Run Code Online (Sandbox Code Playgroud)
然后执行每个(Action?)值:
foreach (var action in actions)
action();
Run Code Online (Sandbox Code Playgroud)
但是我怀疑它是否更具可读性;我建议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();
Run Code Online (Sandbox Code Playgroud)