Лучший способ сравнить два больших списка последовательности, используя C# и LINQ?

У меня есть большой список (~ 110 000 последовательностей), который я должен сравнить с подобным размерным списком.

Список A прибывает из 1 системы. Список B прибывает из стола SQL (я могу только читать, нет сохранил procs, и т.д.),

Что состоит в том, чтобы найти лучший способ, какие ценности находятся в списке A, который больше не существует в списке B?

Действительно ли 100 000 последовательностей - большое количество, которое будет обработано во множестве?

спасибо

14
задан Donaldinio 13 January 2010 в 20:42
поделиться

5 ответов

Пройдите через http://www.khanacademy.org/ математический раздел. Большинство людей заканчивают среднюю школу только с исчислением I под поясом.

Если вы пройдете всю математику здесь, у вас будут почти удовлетворительные требования к математике для бакалавров в CS. Остается только дискретная математика, алгоритмы, конечные автоматы.

Для этого также ознакомьтесь с открытым курсом MIT.

-121--2443229-

При краже с этого вопроса можно использовать метод За исключением < T > () .

-121--2433211-

Таким образом, у вас есть два списка:

List<string> listA;
List<string> listB;

Затем используйте Перечисление. Кроме :

List<string> except = listA.Except(listB).ToList();

Обратите внимание, что если вы хотите, скажем, игнорировать регистр:

List<string> except = listA.Except(listB, StringComparer.OrdinalIgnoreCase).ToList();

Вы можете заменить последний параметр на IeQualityComparer < строка > по вашему выбору.

26
ответ дан 1 December 2019 в 06:39
поделиться
List<string> A = //get from file
List<string> B = //get from db

var C = A.Except(B);
2
ответ дан 1 December 2019 в 06:39
поделиться

Воровство из Этот вопрос , похоже, вы можете использовать , кроме () метода.

-121--2433211-

С LINQ:

var missing = listA.Except(listB).ToList();
9
ответ дан 1 December 2019 в 06:39
поделиться

Кража из Этот вопрос , похоже, вы можете использовать , кроме метода () .

1
ответ дан 1 December 2019 в 06:39
поделиться

Из-за интереса, вы должны использовать список ? Поскольку в .NET 3.5 SP1 вы можете использовать HashSet и это , исключительный методом . Для моего понимания Hashsets специально оптимизированы для сравнения между двумя наборами.

6
ответ дан 1 December 2019 в 06:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: