C# 以简单的方式替换嵌套的foreach
我有两个嵌套的foreach循环:C# 以简单的方式替换嵌套的foreach,c#,linq,loops,foreach,C#,Linq,Loops,Foreach,我有两个嵌套的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 v
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 values=from项目
其中item.Value==“True”
来自appSeedData中的对
其中item.Key.Contains(pair.Key)
选择pair.Value;
foreach(值中的var值){…}
然而,就我个人而言,我更喜欢你已经拥有的东西。它是清晰的、显而易见的,等等。从技术上讲,您可以放置Linq查询: 然后执行每个(
操作
?)值:
但我怀疑它是否更具可读性;我建议Linq和foreach
组合:
这里有另一种可能的方法,但我同意@Dmitry的答案
appArray.Where(item => item.Value == "True").ForEach(item =>
appSeedData.Where(pair => item.Key.Contains(pair.Key)).ForEach(pair => {
// do work
}));
“可以使用LINQ执行相同的代码?或者以最简单的方式?”-是的,但是。。。你所拥有的在我看来已经很好了,它比LINQ更有效,而且已经是“最简单的方法”。你怎么会认为这是“最难”(或不那么容易)的方法?我在想如何使用LINQ,因为它现在非常普遍…@4est你知道还有什么“现在非常普遍”吗?人们试图毫无理由地将完美的代码迁移到LINQ。
foreach (var action in actions)
action();
foreach (var item in appArray.Where(x => x.Value == "True")))
foreach (var pair in appSeedData.Where(p => item.Key.Contains(p.Key)))
pair.Value();
appArray.Where(item => item.Value == "True").ForEach(item =>
appSeedData.Where(pair => item.Key.Contains(pair.Key)).ForEach(pair => {
// do work
}));