最快的算法来比较两个集合或列表

时间:2013-12-04 12:05:10

标签: c# performance linq

我需要.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 ;
    }
}

2 个答案:

答案 0 :(得分:1)

每个都是简单的字符串对象吗?如果是这样,您可以使用类似

的内容
Collection1.Intersect(collection2)

将返回两个集合中存在的所有记录。

这就是你想要的吗?从您的问题中不清楚您是否要在collection2中查找存在于collection1和多次中的记录。如果这就是你想要的,你需要深入挖掘。

答案 1 :(得分:0)

Intersect()等方法应该有所帮助。

不要使用集合,使用Set<T>类(或将集合转换为集合)。 然后你可以调用像Intersect()这样的方法,它只是更快(但是你为了速度而交换内存)