2014-04-23 22 views
14

Liste alanları ekliyorum C# içinde bir liste var.Şimdi eklerken durumu kontrol etmeliyim, eğer koşul tatmin ederse o zaman listeden eklenen son satırı kaldırmam gerekiyor. İşte Listeye eklenen son öğe nasıl kaldırılır?

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 

      } 

     } 

Benim soru C# listeden son satırı kaldırmak için nasıl .. benim örnek kod verilmiştir. Lütfen bana yardım edin.

+4

'List <>' ve 'user. ''' Geçerli C#? –

+6

Sıradaki şeyi ekleyip çıkarmanın amacı nedir? Önce koşulu kontrol edin ve karşılanmadıysa satırı ekleyin veya eklemeyin. –

+0

Giriş dizinini harici olarak bir yerde saklamıyorsanız, LAST ADDED öğesinin kaldırılması Liste sınıfında mümkün değildir. Sanırım sadece son maddeyi kaldırmak istediniz, ama sonra verdiğiniz bütün örnek sadece anlamsız. – Tarec

cevap

9

İlk sırada satır?

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

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

TBH, ben user."" karşı "Something" test ederek bir adım daha gider ve hatta şart yerine getirildikten sürece başlatmasını, ancak derlemek olmaz user."" gibi görerek, ben bir şekilde bu bırakacağım değil okuyucu için egzersiz yapın.

+1

Eklemekte olduğunuz ve listeye eklediğiniz öğeyi kaldırmak istediğiniz durumlar var. Örneğin, farklı iş mantığı nedeniyle kontrol edilmesi gereken bir çok if-elseif koşulu varsa. Bu durumda, if-elseif koşullarından önce satırı ekleyebilirsiniz. Tüm koşulları doğruladıktan ve hiçbirinin tatmin edilmediğinden sonra bu satırı listeden kaldırın. Her koşula rows.Add() koyabilirsiniz, ancak 10 IF ifadeniz varsa, her 10 IF ifadesine rows.Add() eklemeniz gerekir. – Dongminator

57

ben bunu yapmanın en etkili yolu bu RemoveAt kullandığını düşünüyorum:

rows.RemoveAt(rows.Count - 1) 
4

Sen List<T>.RemoveAt yöntemi kullanabilirsiniz: değil eklemek daha mantıklı olmaz

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

Lanet, C# 'da bir pop_back() yöntemi gibi bir şey yok? Bu çok berbat. – antred

İlgili konular