Вы запрашивали одни и те же уникальные строки 1000 - 10000 раз для каждого элемента в allNewStrings
, поэтому это крайне неэффективно.
Попробуйте запросить уникальные строки отдельно, чтобы они выполнялись один раз:
IEnumerable<string> allNewStrings = DownloadAllStrings();
var uniqueStrings = from o in context.Items
select o.TheUniqueString;
var selection = from a in allNewStrings
where !uniqueStrings.Contains(a)
select a;
Теперь вы можете видеть, что последний запрос может быть написан с использованием Except
, что более эффективно для случая операторов множеств, таких как ваш пример:
var selection = allNewStrings.Except(uniqueStrings);