2014-04-23 8 views
14

मेरे पास सी # में एक सूची है जिसमें मैं सूची फ़ील्ड जोड़ रहा हूं.अब मुझे जोड़ने के दौरान स्थिति की जांच करनी है, अगर स्थिति संतुष्ट होती है तो मुझे सूची से जुड़ी अंतिम पंक्ति को हटाने की आवश्यकता है। यहाँ मेरी नमूना कोड है ..सूची में जोड़े गए अंतिम तत्व को कैसे हटाया जाए?

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 

      } 

     } 

तो मेरे सवाल सी # में सूची से अंतिम पंक्ति को निकालने का तरीका है। कृपया मेरी मदद करें।

+4

'सूची <> 'और' उपयोगकर्ता 'है।" वैध सी #? –

+6

अगली चीज़ जोड़ने और हटाने का क्या मतलब है? पहले स्थिति की जांच करें और यदि नहीं मिले तो पंक्ति जोड़ें या अन्यथा इसे न जोड़ें। –

+0

यदि आप इनपुट इंडेक्स को बाहरी रूप से कहीं भी संग्रहीत नहीं कर रहे हैं तो पिछली अतिरिक्त आइटम को हटाकर सूची वर्ग में संभव नहीं है। मुझे लगता है कि आप केवल अंतिम आइटम को निकालना चाहते थे, लेकिन फिर आपके द्वारा प्रदान किया गया पूरा उदाहरण केवल व्यर्थ है। – Tarec

उत्तर

9

इसे और अधिक मतलब नहीं होगा जोड़ने के लिए नहीं पहली जगह पंक्ति?

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

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

TBH, मैं user."" के खिलाफ "Something" परीक्षण से आगे एक कदम जाना चाहते हैं, और यहां तक ​​कि एक instantiating नहीं है जब तक कि शर्त पूरी होने, लेकिन user."" के रूप में देख रहा है संकलन नहीं होगा, मैं एक के रूप में छोड़ देंगे कि पाठक के लिए व्यायाम करें।

+1

ऐसे मामले हैं जिन्हें आप जोड़ना चाहते हैं और फिर उस आइटम को हटा दें जिसे आपने अभी सूची में जोड़ा है। उदाहरण के लिए, यदि अलग-अलग व्यावसायिक तर्कों के कारण जांच करने के लिए बहुत सारी शर्तें हैं। इस मामले में, यदि आप if-elseif स्थितियों से पहले पंक्ति जोड़ सकते हैं। यदि आप सभी शर्तों को सत्यापित करने के बाद और उनमें से कोई भी संतुष्ट नहीं है, तो सूची से इस पंक्ति को हटा दें। आप पंक्तियां डाल सकते हैं। प्रत्येक शर्त में जोड़ें(), लेकिन इसका मतलब है कि यदि आपके पास 10 IF स्टेटमेंट हैं, तो आपको पंक्तियां जोड़नी होंगी। प्रत्येक 10 IF कथन में जोड़ें() जोड़ें। – Dongminator

57

मुझे लगता है कि यह करने के लिए सबसे कारगर तरीका है इस RemoveAt उपयोग कर रहा है:

rows.RemoveAt(rows.Count - 1) 
4

आप List<T>.RemoveAt विधि का उपयोग कर सकते हैं:

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

अरे, सी # में pop_back() विधि की तरह कुछ नहीं? उस तरह बेकार है। – antred

संबंधित मुद्दे