Как изменить значение столбца 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;
}
Если вы знаете идентификатор, вы можете просто отфильтровать его с помощью Select или Find (не помню точно, но я думаю, что это Select), как только у вас есть строка, вы можете назначить значения столбцов.
Я уверен, что есть также лучший LINQ ориентированный путь, но эта старая школа ADO.NET/System.Data подход должен работать в любом случае.
вы можете использовать простой трюк здесь. Удалите строку и снова добавьте ее в таблицу.
dt.Columns.Remove("Value");
dt.Columns.Add("Value", type(System.Int32), 0);