我有一个嵌套的 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 个集合(StringList
或 assemblyTypes
)中哪一个可能更大。您通常希望将较大的转换为查找,以减少迭代次数。
关于C#嵌套foreach循环优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7729231/