У меня есть 2 общих списка коллекции, которые содержат разные объекты.Мне нужен список 1, чтобы включить только элементы, в которых свойство этого объекта найдено в другом списке.
В настоящее время я достигаю этого следующим образом:
foreach (var product in navCat.Value.CategoryAssignment.ToArray())
{
if (!masterCatalog.Product.Any(p => p.ProductId == product.ProductId))
{
//this product doesn't exist in the master catalog so lets remove it
navCat.Value.CategoryAssignment.RemoveAll(p => p.ProductId == product.ProductId);
}
}
Это работает хорошо ...но это очень медленно!Каким будет более эффективный способ?Я искал HashSet<T>
, но я не уверен, как вызвать Remove, основываясь на свойстве другого списка.
Как бы я использовал HashSet в моем примере, чтобы убедиться, что мой второй список содержит только продуктыкоторые находятся в первом списке?