2014-04-23 15 views
14

Mam listę w języku C#, w którym dodaje pola listy. Teraz podczas dodawania muszę sprawdzić warunek, jeśli warunek spełnia następnie muszę usunąć ostatni wiersz dodany z listy. Oto mój przykładowy kod ..Jak usunąć ostatni element dodany do listy?

List<> rows = new List<>(); 
    foreach (User user in users) 
    { 
     try 
     { 
      Row row = new Row(); 
      row.cell = new string[11]; 
      row.cell[1] = user.""; 
      row.cell[0] = user.""; 
      row.cell[2] = user."";   

      rows.Add(row); 

      if (row.cell[0].Equals("Something")) 
      { 

       //here i have to write code to remove last row from the list 
       //row means all the last three fields 

      } 

     } 

Więc moje pytanie brzmi: w jaki sposób usunąć ostatni wiersz z listy w języku C#. Proszę, pomóż mi.

+4

Czy "Lista <>" i "użytkownik". "" Poprawny C#? –

+6

Jaki jest sens dodawania i usuwania następnej rzeczy? Najpierw sprawdź stan, a jeśli nie, to dodaj wiersz lub nie dodawaj go. –

+0

Usunięcie pozycji OSTATNIO DODANEJ nie jest możliwe w klasie Lista, jeśli nie przechowujesz gdzieś zewnętrznego indeksu wejściowego. Przypuszczam, że chciałeś usunąć ostatni przedmiot, ale cały podany przykład jest po prostu bezcelowy. – Tarec

Odpowiedz

9

Czy nie byłoby bardziej sensowne, aby nie dodać Wiersz w pierwszej kolejności?

Row row = new Row(); 
//...  

if (!row.cell[0].Equals("Something")) 
{ 
    rows.Add(row); 
} 

TBH, pójdę o krok dalej, testując "Something" przeciwko user."", a nawet utworzenie wystąpienia chyba że warunek ten jest spełniony, ale widząc jak user."" nie będzie kompilować, zostawiam to jako ćwiczenie dla czytelnika.

+1

Istnieją przypadki, w których możesz dodać, a następnie usunąć element, który właśnie został dodany do listy. Na przykład, jeśli istnieje wiele warunków if-elseif do sprawdzenia ze względu na różne logiki biznesowe. W takim przypadku możesz dodać wiersz przed warunkami if-elseif. Jeśli po sprawdzeniu wszystkich warunków i żaden z nich nie jest spełniony, usuń ten wiersz z listy. Możesz umieścić rows.Add() w każdym warunku, ale oznacza to, że jeśli masz 10 instrukcji IF, musisz dodać rows.Add() do każdej 10 instrukcji IF. – Dongminator

57

Myślę, że najbardziej skutecznym sposobem, aby to zrobić, to jest to za pomocą RemoveAt:

rows.RemoveAt(rows.Count - 1) 
4

Można użyć List<T>.RemoveAt metody:

rows.RemoveAt(rows.Count -1); 
10
rows.RemoveAt(rows.Count - 1); 
+1

Cholera, nic podobnego do metody pop_back() w C#? To trochę jest do bani. – antred