C# 如何在不循环的情况下更改DataTable列值?

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

我有一个数据表,它有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

如何在没有循环的情况下实现这一点?任何建议请。

如果您知道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);