2011-08-24 36 views
9

Tôi có một DataTable có 4 cột. Tôi muốn thay đổi giá trị của cột thứ 3 thành "0". Dưới đây là DataTable của tôi.Làm thế nào để thay đổi giá trị cột DataTable mà không lặp?

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

quả mong muốn của tôi nên như dưới đây:

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

Làm thế nào để đạt được điều này mà không cần vòng lặp? Bất kỳ đề nghị xin vui lòng.

+0

thể trùng lặp: http://stackoverflow.com/questions/5063551/set-value-for-all-rows-in-a-datatable-without-for-loop – Waqas

+0

@Waqas: Nhưng có quá họ đã sử dụng foreach ... – thevan

+0

OK, chỉ một câu hỏi - tại sao không lặp lại? – Michael

Trả lời

13

Làm thế nào về điều này? ↓ mà không cần vòng lặp ....

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

Tôi nhận được câu trả lời từ mã trên. cảm ơn bạn rất nhiều. – thevan

1

nếu bạn biết ID bạn chỉ có thể lọc cho nó bằng cách sử dụng Chọn hoặc Tìm (không nhớ chính xác nhưng tôi nghĩ là Chọn), khi bạn có hàng, bạn có thể gán giá trị cột.

Tôi chắc chắn đó cũng là cách tốt hơn theo định hướng LINQ nhưng cách tiếp cận ADO.NET/System.Data cũ của trường này vẫn hoạt động.

+0

Nhưng Chọn chỉ để lọc dữ liệu có thể định vị bằng cách đưa ra giá trị cột của nó. Làm cách nào tôi có thể đặt giá trị là "0" cho tất cả các giá trị cột? – thevan

+0

cảm ơn bạn rất nhiều vì những đóng góp quý báu cho câu hỏi của tôi. – 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

cảm ơn bạn rất nhiều vì những đóng góp quý báu cho câu hỏi của tôi. – thevan

1

Bạn có thể sử dụng một thủ thuật đơn giản ở đây. Xóa hàng và thêm lại vào bảng.

dt.Columns.Remove("Value"); 
dt.Columns.Add("Value", type(System.Int32), 0); 
Các vấn đề liên quan