2013-12-04 5 views
0

Мне нужен Самый быстрый алгоритм в .net C# для сравнения двух больших коллекций (2 записи lakh в каждой коллекции). Мне нужно проверить каждую строку коллекции1 с каждой строкой collection2 и вернуть строку коллекции1, которая имеет дубликаты записей в коллекции2.Самый быстрый алгоритм для сравнения двух коллекций или списка

Просьба предложить запрос Linq или таблицы поиска, которые когда-либо является faster..The записи как 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 ; 
    } 
} 

ответ

1

ли они простые строковые объекты в каждой? Если это так, вы можете использовать что-то вроде

Collection1.Intersect(collection2) 

Которая вернет всю запись, которая существует в обеих коллекциях.

Это то, что вы хотели? Из вашего вопроса неясно, хотите ли вы найти записи, которые существуют в коллекции1, и несколько раз в коллекции2. Если это то, что вы хотите, вам нужно будет копать глубже.

+0

Да ..Ваш второй оператор - то, что я хочу .. – Shabz

0

Методы, такие как Intersect() и т. Д., Должны помочь.

Не используйте коллекции, используйте классы Set<T> (или конвертируйте свои коллекции в комплекты). Тогда вы можете назвать методы, подобные Intersect(), это просто быстрее (но вы торгуете памятью для скорости)

+0

intersect вернет мне общие записи. Я хочу, чтобы t находил записи, которые существуют в коллекции1 и несколько раз в коллекции2. – Shabz

+0

. Что вы можете сделать, так это GroupBy в коллекции, фильтр, где в группе более одного (так что критерии «несколько раз» удовлетворяются), а затем используйте Intersect или Except, в зависимости от того, что вы хотите. –

Смежные вопросы