Есть класс DB
class DB
{
private List
В дальнейшем я использую List
Есть также отдельно список List
Как сравнить элементы класса listDB.Url и urls и удалить из listDB те элементы url которых равен url списка urls
Я вижу это как создание двойного цикла и сравнение элементов. Думаю есть простое решение через linq
Ответ
Чтобы избежать двойного цикла, я бы сложил url, которые надо удалить, в HashSet
var urlSet = new HashSet
После этого вам достаточно просто
listDB.RemoveAll(db => urlSet.Contains(db.Url));
Это не совсем LINQ, но, думаю, самый быстрый способ, если у вас достаточно большие списки.
Если оба списка маленькие, наверное, скорее будет обойтись без вспомогательного множества:
listDB.RemoveAll(db => urls.Contains(db.Url));
При этом urls.Contains пробегает цикл по списку urls (а вот urlSet.Contains даёт ответ за O(1)).
Комментариев нет:
Отправить комментарий