2011-08-24 13 views
9

मेरे पास डेटाटेबल है जिसमें 4 कॉलम हैं। मैं तीसरे कॉलम के मान को "0" के रूप में बदलना चाहता हूं। नीचे मेरा डेटाटेबल है।लूपिंग के बिना डेटाटेबल कॉलम वैल्यू को कैसे बदला जाए?

ID    Name   Value  Type 
----   ----   -----  ----- 
1    Sam    250  2 
2    Rai    324  3 
3    Tim    985  8 

मेरे वांछित परिणाम नीचे की तरह होना चाहिए:

ID    Name   Value  Type 
----   ----   -----  ------ 
1    Sam    0   2 
2    Rai    0   3 
3    Tim    0   8 

कैसे पाशन के बिना इस लक्ष्य को हासिल करने के लिए? कृपया कोई सुझाव।

+0

संभव डुप्लिकेट: http://stackoverflow.com/questions/5063551/set-value-for-all-rows-in-a-datatable-without-for-loop – Waqas

+0

@Waqas: लेकिन वहाँ भी वे foreach इस्तेमाल किया था ... – thevan

+0

ठीक है, सिर्फ एक सवाल - क्यों लूप नहीं? – Michael

उत्तर

13

इस बारे में कैसे? पाश के बिना ↓ ....

static void Main(string[] args) 
{ 
    DataTable table = new DataTable(); 

    table.Columns.Add("col1"); 
    table.Columns.Add("col2"); 

    table.Rows.Add(new object[] { "1", "1" }); 
    table.Rows.Add(new object[] { "1", "1" }); 
    table.Rows.Add(new object[] { "1", "1" }); 
    table.Rows.Add(new object[] { "1", "1" }); 

    foreach (DataRow row in table.Rows) 
     Console.WriteLine(row["col2"].ToString()); 

    Console.WriteLine("***************************************"); 

    DataColumn dc = new DataColumn("col2"); 
    dc.DataType = typeof(int); 
    dc.DefaultValue = 0; 

    table.Columns.Remove("col2"); 
    table.Columns.Add(dc); 

    foreach (DataRow row in table.Rows) 
     Console.WriteLine(row["col2"].ToString()); 


    Console.ReadKey(); 
} 
+0

मुझे उपरोक्त कोड से उत्तर मिला। बहुत बहुत धन्यवाद। – thevan

1

यदि आप आईडी जानते हैं तो आप चयन या ढूँढकर (केवल याद नहीं है लेकिन मुझे लगता है कि चयन करें) का उपयोग करके इसके लिए फ़िल्टर कर सकते हैं, एक बार आपके पास पंक्ति हो जाने के बाद, आप कॉलम मान असाइन कर सकते हैं।

मुझे यकीन है कि एक बेहतर LINQ उन्मुख तरीका भी है लेकिन यह पुराना स्कूल ADO.NET/System.Data दृष्टिकोण वैसे भी काम करना चाहिए।

+0

लेकिन चयन केवल कॉलम मान देकर डेटाटेबल को फ़िल्टर करने के लिए है। मैं सभी कॉलम मानों के लिए मान को "0" के रूप में कैसे सेट कर सकता हूं? – thevan

+0

मेरे प्रश्न में आपके बहुमूल्य योगदान के लिए आपको बहुत बहुत धन्यवाद। – thevan

2
DataRow[] rows = myDataTable.Select("id = 'myIdValue'); 
//If you don't want to select a specific id ignore the parameter for select. 

for(int i = 0; i < rows.Length; i ++) 
{ 
     rows[i]["value"] = 0; 
} 

DataTable.Select Method

+0

मेरे प्रश्न में आपके बहुमूल्य योगदान के लिए आपको बहुत बहुत धन्यवाद। – thevan

1

आप एक सरल चाल का उपयोग कर सकते। पंक्ति हटाएं और इसे तालिका में दोबारा जोड़ें।

dt.Columns.Remove("Value"); 
dt.Columns.Add("Value", type(System.Int32), 0); 
संबंधित मुद्दे