Как изменить значение столбца DataTable без цикла?

у меня есть DataTable, который имеет 4 столбца. Я хочу изменить значение 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

Как достичь этого без цикла? Любые предложения, пожалуйста.

4 ответов


Как насчет этого? ↓ без петли....

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'); 
//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 или Find (не помню точно, но я думаю, что это Select), как только у вас есть строка, вы можете назначить значения столбцов.

Я уверен, что есть также лучший LINQ ориентированный путь, но эта старая школа ADO.NET/System.Data подход должен работать в любом случае.


вы можете использовать простой трюк здесь. Удалите строку и снова добавьте ее в таблицу.

 dt.Columns.Remove("Value");
 dt.Columns.Add("Value", type(System.Int32), 0);