У меня есть большой список (~ 110 000 последовательностей), который я должен сравнить с подобным размерным списком.
Список A прибывает из 1 системы. Список B прибывает из стола SQL (я могу только читать, нет сохранил procs, и т.д.),
Что состоит в том, чтобы найти лучший способ, какие ценности находятся в списке A, который больше не существует в списке B?
Действительно ли 100 000 последовательностей - большое количество, которое будет обработано во множестве?
спасибо
Пройдите через http://www.khanacademy.org/ математический раздел. Большинство людей заканчивают среднюю школу только с исчислением I под поясом.
Если вы пройдете всю математику здесь, у вас будут почти удовлетворительные требования к математике для бакалавров в CS. Остается только дискретная математика, алгоритмы, конечные автоматы.
Для этого также ознакомьтесь с открытым курсом MIT.
-121--2443229- При краже с этого вопроса можно использовать метод За исключением < T > ()
.
Таким образом, у вас есть два списка:
List<string> listA;
List<string> listB;
Затем используйте Перечисление. Кроме
:
List<string> except = listA.Except(listB).ToList();
Обратите внимание, что если вы хотите, скажем, игнорировать регистр:
List<string> except = listA.Except(listB, StringComparer.OrdinalIgnoreCase).ToList();
Вы можете заменить последний параметр на IeQualityComparer < строка >
по вашему выбору.
List<string> A = //get from file
List<string> B = //get from db
var C = A.Except(B);
Воровство из Этот вопрос , похоже, вы можете использовать , кроме
метода.
С LINQ:
var missing = listA.Except(listB).ToList();
Кража из Этот вопрос , похоже, вы можете использовать , кроме метода
.
Из-за интереса, вы должны использовать список
? Поскольку в .NET 3.5 SP1 вы можете использовать HashSet и это , исключительный методом . Для моего понимания Hashsets специально оптимизированы для сравнения между двумя наборами.