@tera1004

Удаление элемента в List C#?

Как обновить список элементов,в котором уже не будет элемента с указанным порядковым номером?

public static Payment ClearPayment()
        {
            Console.Write("Enter code: ");
            int C = int.Parse(Console.ReadLine());
            var found = payments.Exists(c => c.Code == C);
            
            if (found == true)
            {
                foreach (Payment n in payments)
                {
                    payments.RemoveAt(C-1);
                }
            }
  • Вопрос задан
  • 1081 просмотр
Решения вопроса 1
FoggyFinder
@FoggyFinder
Можно использовать метод RemoveAll для удаления всех вхождений удовлетворяющих передаваемому предикату:

public static void ClearPayment()
{
    Console.Write("Введите код: ");
    int C = int.Parse(Console.ReadLine());
    if (payments.RemoveAll(p => p.Code == C) > 0)
        Console.WriteLine("Указанный платеж удален ");
    else
        Console.WriteLine("Платежа с таким кодом не существует");
}


RemoveAll вернет количество элементов, которые были удалены из списка.

Еще один способ - использовать комбинацию методов из группы Find и Remove:

FindIndex + RemoveAt

или

Find + Remove

Отличие от Exists в том, что эти методы возвращают индекс (FindIndex) или сам элемент (Find), а не только проверяют существование подходящего элемента.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@John_Nash
coder
foreach (Payment n in payments)
{
payments.RemoveAt(C-1);
}

foreach (Payment n in payments.ToList())
{
payments.RemoveAt(C-1);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы