Содержимое в списке работает слишком медленно. Как улучшить?C#

Место общения программистов C#
Ответить
Anonymous
 Содержимое в списке работает слишком медленно. Как улучшить?

Сообщение Anonymous »

У меня есть список объектов, которые я хочу сократить до тех, свойства которых содержатся в отдельном списке.

Список1 — это список простых строк.

List2 — это список объектов, содержащий два строковых свойства; A и B.

Все элементы, где A и B отсутствуют в списке 1, должны быть удалены.

Этот процесс очень зависит от времени и должен быть максимально быстрым.
В настоящее время у меня есть следующая реализация:

Код: Выделить всё

var List1 = new List() {"Around", "9000", "strings"}; //List of about 9000 strings
var List2 = databaseList.ToList(); //Around 2.5 million objects

var reducedList = new HashSet();
foreach (var item in List2)
{
if(List1.Contains(item.A) && List1.Contains(item.B))
{
reducedList.Add(item);
}
}
Этот процесс занимает около 7 секунд, что для моих текущих требований слишком медленно.

Я пробовал запустить это с помощью LINQ, но результат тот же, около 7 секунд.

Код: Выделить всё

var reducedList = List2.Where(r => List1.Contains(r.A)).Where(r => List1.Contains(r.B)).ToList();
Есть предложения, что я могу сделать, чтобы это улучшить?

РЕДАКТИРОВАТЬ:
Я не могу сделать это со стороны SQL, поскольку 9000 строк, с которыми мне нужно сравнить, не могут быть «переведены» в SQL-запрос, но будут превышать разрешенные 2100 входных параметров, которые разрешены. в нашей настройке SQL Server.

Подробнее здесь: https://stackoverflow.com/questions/340 ... to-improve
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»