我需要.NET C#中最快的算法来比较两个大型集合(每个集合中有200000条记录)。我需要使用集合2的每一行验证集合1的每一行,并返回集合1中具有重复记录的集合2的行。
请建议一个更快的linq查询或查找表..记录类似于A2368FG,AD5686,B678SD,C68AGFD,......
private bool CheckValidCode(string stdCode, List<COde> CodeMap, out int count)
{
bool bRetVal = true;
count = 1;
try
{
List<COde> tempCodeMap = new List<COde>();
for (int i = 0; i < CodeMap.Count; i++)
{
if (CodeMap[i].StandardCode == (stdCode))
{
tempCodeMap .Add(customerCodeMappings[i]);
if (CodeMap[i + 1].StandardCode == (stdCode))
{
tempCodeMap .Add(CodeMap[i + 1]);
}
break;
}
}
return tempCodeMap ;
}
}
答案 0 :(得分:1)
每个都是简单的字符串对象吗?如果是这样,您可以使用类似
的内容Collection1.Intersect(collection2)
将返回两个集合中存在的所有记录。
这就是你想要的吗?从您的问题中不清楚您是否要在collection2中查找存在于collection1和多次中的记录。如果这就是你想要的,你需要深入挖掘。
答案 1 :(得分:0)
像Intersect()
等方法应该有所帮助。
不要使用集合,使用Set<T>
类(或将集合转换为集合)。
然后你可以调用像Intersect()
这样的方法,它只是更快(但是你为了速度而交换内存)