2014-11-18 11 views
-4

У меня есть следующий список:Удалить 1 элемент из списка коллекции с помощью LinQ C#

1 
5 
2 
1 
2 
9 
1 

В этом случае у меня есть номер 1 повторяется три раза. мне нужно создать выражение с помощью Linq, в котором номер, который вы хотите удалить указано только один раз:

Пример:

RemoveItem(1), Result: 
    1 
    5 
    2 
    1 
    2 
    9 

Функция, содержащая только удалить LINQ 1 пункт, а не все.

Я слышал о .RemoveAll, но я удалил все дубликаты, и мне нужно только удалить его.

+0

Как вы будете знать, какие '1' удалить? –

+0

Независимо от того, что он может удалить. –

+4

Как насчет использования 'RemoveAt'? –

ответ

5

Вы можете искать First элемента, соответствующего вашим критериям и удалить его люблю:

List<int> yourList = new List<int> { 1, 5, 2, 1, 2, 9, 1 }; 
yourList.Remove(yourList.FirstOrDefault(r=> r == 1)); 

Или просто:

yourList.Remove(1); 

так List<T>.Remove удалит первое вхождение указанного объекта.

(Использование FirstOrDefault было бы полезно, если вы имеете дело со списком ссылочных типов (классов объектов))

Это удалит первый элемент найден соответствующий критериям поэтому после первого удаления вы останетесь с 5, 2, 1, 2, 9, 1 в вашем списке.

Если вы хотите, чтобы удалить элемент из конца списка используйте RemoveAt как:

yourList.RemoveAt(yourList.LastIndexOf(1)); 
+1

Большое спасибо за вашу помощь, ваш ответ решил мою проблему. –

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