我有一个有4列的DataTable。我想将第3列的值更改为“0”。 下面是我的DataTable。
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 :(得分: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();
}
答案 1 :(得分: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;
}
答案 2 :(得分:2)
你可以在这里使用一个简单的技巧。删除行并将其重新添加到表中。
dt.Columns.Remove("Value");
dt.Columns.Add("Value", type(System.Int32), 0);
答案 3 :(得分:1)
如果您知道ID,您只需使用选择或查找过滤它(不记得确切,但我认为是选择),一旦有了行,就可以指定列值。
我确信还有一种更好的面向LINQ的方式,但这个老式的ADO.NET / System.Data方法应该可行。