Мне было поручено сопоставить 1,7 миллиона записей с некоторыми результатами, которые были переданы мне в CSV-файле.
немного фона для кода ниже, у меня есть два списка ...
Сертификаты, которые содержат 5 свойств с идентификатором, эквивалентным PK.
Заказы, которые содержат список идентификаторов, которые должны содержаться в списке сертификатов.
Мне нужно сопоставитьдва и сделайте что-нибудь с теми объектами Cert, которые найдены.
foreach (Classes.CertOrder.IDS OrderUnitID in Order.AllIDs)
{
var Cert = (from C in Certs where C.ID.ToUpper() == OrderUnitID.ID.ToUpper() select C).FirstOrDefault();
if (Cert != null)
{
Output.add(Cert)
OrderUnitID.fulfilled = true;
}
}
Этот код работает, но он очень медленный (чего и следовало ожидать с количеством записей) Есть ли способ, которым я могу ускорить это?
Правка Добавить, хотелось бы иметь возможность добавлять данные на сервер SQL для выполнения запросов, однако данные таковы, что не разрешается покидать рабочую станцию, на которой обрабатывается файл, илидаже разрешено трогать диск в незашифрованном виде.
В сочетании с полезным ответом ниже, я изменил свой вывод на список, предварительно отсортировав оба спискаs по ID, и теперь обработка занимает секунды, а не часы!Спасибо, переполнение стека!