Удаление элементов на основе двух списков - PullRequest
0 голосов
/ 30 января 2019

У меня есть два списка, один - список строк, а другой - список сложного типа, называемый ItemTransactions.

Первый список содержит список ItemID и основан на этом первом списке, где бы он ни находился.Идентификатор ItemID в списке «ItemTransactinos» происходит, его необходимо удалить ...

Выполнение традиционным способом, как показано ниже, очень медленное, оба списка велики:

foreach (var item in ItemIDs) // ItemIDs is lsit of strings 
{
  itemTransactions.Remove(/*remove*/); // 1 itemID can occur multiple times in this list... So I would like to remove all items in this collections that correspond 1 ItemID at once if possible?
}

Может кто-нибудь помочьмне с этим?

PS Коллекции ItemTransactions содержат свойство под названием "ItemID", которое также является типом строки ... Просто чтобы отметить, что

Ответы [ 2 ]

0 голосов
/ 30 января 2019
ItemList.Where(item => !StringList.Contains(item.ItemID);

Хорошо подойдет для того, что вы ищете.

0 голосов
/ 30 января 2019

Вы можете использовать RemoveAll:

itemTransactions.RemoveAll(i => ItemIDs.Contains(i.ItemID));

Не уверен, что это быстрее или нет, но это немного более кратко и явно.В конечном итоге вам придется протестировать различные варианты, чтобы увидеть, какой код работает лучше для вас.

...