У меня есть LinkedList, где у Entry есть член с именем id. Я хочу удалить запись из списка, где идентификатор соответствует значению поиска. Как лучше всего это сделать? Я не хочу использовать Remove (), потому что Entry.Equals будет сравнивать другие члены, а я хочу только совпадать по идентификатору. Я надеюсь сделать что-то вроде этого:
entries.RemoveWhereTrue(e => e.id == searchId);
edit: Может ли кто-нибудь повторно открыть мне этот вопрос? Это НЕ дубликат - вопрос, который должен быть дубликатом, касается класса List. List.RemoveAll не будет работать - это часть класса List.





Просто используйте метод расширения Where. Вы получите новый список (IIRC).
list.Remove(list.First(e => e.id == searchId));
Смотрите мой ответ - метод RemoveAll фактически принимает предикат в качестве параметра.
За исключением того, что в LinkedList <T> нет метода RemoveAll.
Этот вопрос касается LinkedList, в котором нет метода RemoveAll.
«хотя, к сожалению, для этого требуется две итерации по списку, а не одна, как в моем решении» Нет. Удалить (LinkedListNode <T>) равно O (1)
Вот простое решение:
list.Remove(list.First((node) => node.id == searchId));
Вот ответ на повторяющийся вопрос <stackoverflow.com/questions/16460/…>