C# 如何在不循环的情况下更改DataTable列值?
我有一个数据表,它有4列。我想将第三列的值更改为“0”。 下面是我的数据表C# 如何在不循环的情况下更改DataTable列值?,c#,asp.net,datatable,C#,Asp.net,Datatable,我有一个数据表,它有4列。我想将第三列的值更改为“0”。 下面是我的数据表 ID Name Value Type ---- ---- ----- ----- 1 Sam 250 2 2 Rai 324 3 3 Tim
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
如何在没有循环的情况下实现这一点?任何建议请。如果您知道ID,您可以使用Select或Find(不记得很清楚,但我认为是Select)简单地筛选它,一旦您有了行,您就可以分配列值
我相信也有一种更好的面向LINQ的方法,但这种老式的ADO.NET/System.Data方法无论如何都应该有效。这个怎么样?↓ 没有循环
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();
}
DataRow[]rows=myDataTable.Select(“id='myIdValue');
//如果不想选择特定id,请忽略select的参数。
for(int i=0;i
您可以在这里使用一个简单的技巧。删除行并将其重新添加到表中
dt.Columns.Remove("Value");
dt.Columns.Add("Value", type(System.Int32), 0);
可能重复:@Waqas:但他们也使用了foreach…好的,只有一个问题-为什么不循环?我只使用循环更改了列的值。假设行数超过此值,则会花费更多时间。这就是为什么我不使用循环进行指定。但是Select只是通过给出列值来过滤数据表。如何设置值对于所有列值,e为“0”?非常感谢您对我的问题的宝贵贡献。非常感谢您对我的问题的宝贵贡献。
dt.Columns.Remove("Value");
dt.Columns.Add("Value", type(System.Int32), 0);