作为this question的一部分,反复指出我使用类似于此的代码遇到了O(n ^ 2)问题。
public class Foo
{
public string IdentityValue {get;set;}
public string Prop1 {get;set;}
public string Prop2 {get;set;}
}
List<Foo> itemSet1 = GenerateLargeItemSet(); //makes a large list, > 5000 items for example
List<Foo> itemSet2 = GenerateLargeItemSet();
foreach (var itemFromSet1 in itemSet1)
{
//does a corresponding item exist in itemSet2?
var itemSet2Item = itemSet2.FirstOrDefault(i => i.IdentityValue == itemFromSet1.IdentityValue);
if (itemSet2Item != null)
{
//do stuff to create item in the persistent store
}
else
{
//do stuff to update item in the persistent store
}
}
在讨论字符串比较和并行化注意事项时,是否存在一种廉价且通用的方法(对象可能是T类型,Identity属性可能是其他类型)来减少O(n ^ 2)性质?
最佳答案
解决方案之一是使用具有复杂性的方法