2015-02-12 3 views
1

Я хочу удалить элементы из списка сущностей, если есть список из списка (id). Я написал этот код, но я предполагаю, что есть лучший способ сделать это и повысить производительность.Linq для сущностей удалить из списка

Вот мой код:

List<int> toRemove; //includes the ids of the entities to be removed 
     if (people.Count > 1) 
      people.RemoveAll(x => people.Any(y => y != x && toRemove.Contains(x.ID))); 
     else 
      people.RemoveAll(x => toRemove.Contains(x.ID)); 
+4

Так что вы хотите, чтобы все элементы [ 'except'] (https://msdn.microsoft.com/en-us/library/vstudio/ bb300779% 28v = vs.100% 29.aspx) в списке удаления? – DavidG

+0

@DavidG точно – DanielV

+0

@DavidG Я прочитал о методе, но он работает только в обоих списках, имеют один и тот же тип элементов, я могу заставить его быть списком , но тогда у меня не будет списка в результате – DanielV

ответ

1

Учитывая список людей, например:

var people = new List<Person> 
{ 
    new Person { ID = 1, Name = "Fred1" }, 
    new Person { ID = 2, Name = "Fred2" }, 
    new Person { ID = 3, Name = "Fred3" }, 
    new Person { ID = 4, Name = "Fred4" }, 
    new Person { ID = 5, Name = "Fred5" }, 
    new Person { ID = 6, Name = "Fred6" }, 
    new Person { ID = 7, Name = "Fred7" }, 
    new Person { ID = 8, Name = "Fred8" }, 
    new Person { ID = 9, Name = "Fred9" }, 
    new Person { ID = 10, Name = "Fred10" } 
}; 

И список идентификаторов для удаления:

List<int> toRemove = new List<int> { 3, 4, 5 }; 

Вы можете удалить нежелательные записи:

people = people.Where(p => !toRemove.Contains(p.ID)).ToList(); 

О, и для полноты, вот класс Person, чтобы завершить пример!

public class Person 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

И показать его работы:

https://ideone.com/ERP3rk

+0

работал просто отлично, спасибо – DanielV

Смежные вопросы