c# - 以简单的方式替换嵌套的 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 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();

但我怀疑它是否更具可读性;我建议 Linqforeach 组合:

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/

相关文章:

php - 如何在PHP中计算总记录并重复主div 3次

c# - 获取所有只出现一次的元素

c# - 有没有一种方法可以简化基于字符串中包含的值的设置?

c# - 使用 Open XML SDK 2.0 或 Linq 在 Word 2010 中删除自定义属性的内容

r - 根据多列中的直接和间接相似性对变量进行分组的快速方法

javascript - 循环内的 NodeJS fs.stat

c# - 使用 Windows 服务实现预定作业的最佳方法是什么

c# - C#控制桌面最大化区域

vb.net - 在 LINQ 查询选择语句中使用 .ToString

c# - 执行第二个 LINQ 查询时 ObservableCollection 没有更新?