2010-12-21 10 views
31

मैं एक datatable में प्रत्येक पंक्ति के माध्यम से पाशन कर रहा हूँ:एक डेटाटेबल से पंक्ति संख्या कैसे प्राप्त करें?

foreach (DataRow row in dt.Rows) {} 

मैं डीटी datatable भीतर वर्तमान पंक्ति के सूचकांक प्राप्त करना चाहते हैं। उदाहरण के लिए:

int index = dt.Rows[current row number] 

मैं यह कैसे कर सकता हूं?

+0

क्या डेटाबेस आप काम कर रहे, हो रही पंक्ति संख्या बदलती रहती है तो हमें बताएं। उदाहरण के लिए, ओरेकल में, आप 'rownum' का चयन करते हैं। – FrustratedWithFormsDesigner

उत्तर

66
int index = dt.Rows.IndexOf(row); 

लेकिन आप शायद बेहतर कर रहे हैं के बजाय पाश foreach के लिए एक का उपयोग कर।

+3

यह कोड डेटाटेबल में प्रत्येक पंक्ति के लिए आंतरिक लाल-काले पेड़ की खोज को मजबूर करेगा जबकि लूप के लिए एक साधारण उस ओवरहेड की आवश्यकता नहीं है (क्योंकि आपके पास इंडेक्स ऊपर है)। –

+1

फॉर लूप का उपयोग करना निश्चित रूप से एक बेहतर विकल्प है लेकिन यह सवाल नहीं था। –

4

आपके पास यहां दो विकल्प हैं।

  1. आप अपनी खुद की सूचकांक काउंटर बना सकते हैं और यह एक foreach पाश का उपयोग कर के बजाय बढ़ाने के
  2. कर सकते हैं, तो आप व्यक्तिगत पंक्ति बस, डेटा का प्रतिनिधित्व करता है, तो यह पता नहीं होगा पाश

के लिए एक का उपयोग कर सकते यह किस पंक्ति में स्थित है।

26

यदि आपको उस आइटम की अनुक्रमणिका की आवश्यकता है जिसके साथ आप काम कर रहे हैं तो foreach लूप संग्रह पर पुनरावृत्ति करने का गलत तरीका है। जिस तरह से आप पाशन रहे परिवर्तन करें कि आप सूचकांक:

for(int i = 0; i < dt.Rows.Count; i++) 
{ 
    // your index is in i 
    var row = dt.Rows[i]; 
} 
2

आपको पता है कि DataRow DataTable की पंक्ति है?

क्या आप वर्तमान में प्रत्येक पंक्ति के माध्यम से पहले से ही लूप कर चुके हैं। वर्तमान पंक्ति प्राप्त करने के लिए आपको बस कितनी पंक्तियां हैं, इसका ट्रैक रखना होगा।

int i = 0; 
int index = 0; 
foreach (DataRow row in dt.Rows) 
{ 
index = i; 
// do stuff 
i++; 
} 
+1

यह उत्तर विशेष रूप से वर्तमान प्रश्न के प्रकाश में समझने में मुश्किल है। वह बस पूछ रहा है कि वर्तमान पंक्ति के सूचकांक को कैसे प्राप्त किया जाए। क्या वह पंक्ति 1, पंक्ति 2, आदि पर है –

+0

यदि यह इतना आसान है तो उसे जवाब दें एंथनी पूरी तरह से वैध उत्तरों को वोट देने के आसपास नहीं जाते हैं। –

+1

आपका मूल उत्तर इस जैसा नहीं है, और यह पूरी तरह से चिह्नित है। यदि नहीं, तो आप इसे पूरी तरह से बदल नहीं पाएंगे। अपना जवाब देने के लिए, यह अनावश्यक है। जस्टिन ने पहले ही वह उत्तर दिया है जो मैं दूंगा। * –

4

आप इस

for(int i=0; i < dt.Rows.Count; i++) 
{ 
    // u can use here the i 
} 
0
ArrayList check = new ArrayList();    

for (int i = 0; i < oDS.Tables[0].Rows.Count; i++) 
{ 
    int iValue = Convert.ToInt32(oDS.Tables[0].Rows[i][3].ToString()); 
    check.Add(iValue); 

} 
0

कोशिश क्यों की कोशिश नहीं करते हैं:

int i = Convert.ToInt32(dt.Rows.Count); 

मुझे लगता है कि कम से कम, इस प्रकार का सबसे सरल तरीका है।

0

एक datatable में पंक्तियों की संख्या प्राप्त करने के लिए: dt.Rows.Count

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