C#嵌套foreach循环优化

标签 c# wpf foreach

我有一个嵌套的 foreach 循环,我真的需要用它来减少计算时间。每个集合大约有 50 个成员,因此推断是巨大的。我查看了很多关于 SelectMany 的信息,但我仍然不完全确定如何使用它,或者它是否是正确的解决方案。

List<string> StringList; //Populated in previous code
Type[] assemblyTypes = RandomAssembly.GetTypes();

foreach (String name in StringList)
{                               
  foreach (Type at in assemblyTypes)
  {                             
    if (name == at.Name)
    {                                       
      //Do stuff.
    }
  }
}

提前致谢!

最佳答案

使用查找(例如字典)来提高检查类型名称的速度:

List<string> StringList; //Populated in previous code
Dictionary<string,Type> assemblyTypes = RandomAssembly.GetTypes()
    .ToDictionary(t => t.Name, t => t);

foreach (String name in StringList)
{                               
    if (assemblyTypes.ContainsKey(name))
    {                                       
      //Do stuff.
    }
  }
}

您还应该检查 2 个集合(StringListassemblyTypes)中哪一个可能更大。您通常希望将较大的转换为查找,以减少迭代次数。

关于C#嵌套foreach循环优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7729231/

相关文章:

c# - 在另一个管理员向 channel 发送帖子后, channel 管理员 Telegram 机器人停止获取更新

c# - 如何通过 MediaElement 播放库中的文件?

wpf - 我应该将 WPF 用于将在 Windows XP 上运行的基于数据的表单应用程序吗?

c++ - boost 每个问题

Java For 循环根据条件递增或递减

C# System.Diagnostics.Process : how to exit a process if it takes more than, 说,10 秒?

c# - 如何在 .NET Core 应用程序 docker 镜像中包含依赖项?

c# - WPF Datagrid 列格式编号以包含逗号

c# - 条件文本绑定(bind) XAML

javascript - 事件监听器不返回所有事件类型的对象属性