我在應用程序中有兩個帶有條件的數據表,並且想要對多行進行一些處理以更新列值。在沒有循環的情況下更新數據表中的多行
例如:
我有datatable1 10000行。我想通過datatable.select(「條件」)篩選行,並根據條件,我想更新行值。
如果對於任何情況,我從數據表中找到20行。我想一次性更新這20條記錄。不在任何循環中。我有datarow數組,以便在datable中更新這些值。
我在應用程序中有兩個帶有條件的數據表,並且想要對多行進行一些處理以更新列值。在沒有循環的情況下更新數據表中的多行
例如:
我有datatable1 10000行。我想通過datatable.select(「條件」)篩選行,並根據條件,我想更新行值。
如果對於任何情況,我從數據表中找到20行。我想一次性更新這20條記錄。不在任何循環中。我有datarow數組,以便在datable中更新這些值。
你可以試試下面的LINQ,
DataTable recTable = new DataTable();
// do stuff to populate table
recTable.Select(string.Format("[code] = '{0}'", someName)).ToList<DataRow>().ForEach(r => r["Color"] = colorValue);
你可以替換你列在這裏值...
循環遠遠高於這個 –
這只是一種更新方法,不需要外部使用循環。如果性能是一個約束,那麼去並行。 –
感謝您的意見和建議。 –
要更新一行多重條件使用該
datatable.Select(string.Format("[lineNo]='{0}' and [Position]>='{1}' ", lineNo, Position)).ToList<DataRow>().ForEach(r => r["Linetext"] ="Sample Text");
如果你想默認一列值爲abc
使用表達式,那麼你可以使用下面的代碼。
dt.Columns.Add("ColumnName").Expression = "'abc'";
如果您需要使用變量動態傳遞值,可以使用下面的代碼。
string str = "abc";
dt.Columns.Add("ColumnName").Expression = "'" + str + "'";
你到底想要更新哪些行?這看起來像你可能使用「in」關鍵字進行動態查詢。 – Kippie
你認爲如何在沒有循環的情況下做到這一點?如果框架提供了一些方法,它也會在內部做一個循環! –
也許他的意思是用lambda表達式..但是無論如何會有循環 – darkdog