2013-09-16 43 views
1

我在應用程序中有兩個帶有條件的數據表,並且想要對多行進行一些處理以更新列值。在沒有循環的情況下更新數據表中的多行

例如:

我有datatable1 10000行。我想通過datatable.select(「條件」)篩選行,並根據條件,我想更新行值。

如果對於任何情況,我從數據表中找到20行。我想一次性更新這20條記錄。不在任何循環中。我有datarow數組,以便在datable中更新這些值。

+0

你到底想要更新哪些行?這看起來像你可能使用「in」關鍵字進行動態查詢。 – Kippie

+2

你認爲如何在沒有循環的情況下做到這一點?如果框架提供了一些方法,它也會在內部做一個循環! –

+1

也許他的意思是用lambda表達式..但是無論如何會有循環 – darkdog

回答

5

你可以試試下面的LINQ,

DataTable recTable = new DataTable(); 

// do stuff to populate table 

recTable.Select(string.Format("[code] = '{0}'", someName)).ToList<DataRow>().ForEach(r => r["Color"] = colorValue); 

你可以替換你列在這裏值...

+1

循環遠遠高於這個 –

+0

這只是一種更新方法,不需要外部使用循環。如果性能是一個約束,那麼去並行。 –

+0

感謝您的意見和建議。 –

1

要更新一行多重條件使用該

datatable.Select(string.Format("[lineNo]='{0}' and [Position]>='{1}' ", lineNo, Position)).ToList<DataRow>().ForEach(r => r["Linetext"] ="Sample Text"); 
0

如果你想默認一列值爲abc使用表達式,那麼你可以使用下面的代碼。

dt.Columns.Add("ColumnName").Expression = "'abc'"; 

如果您需要使用變量動態傳遞值,可以使用下面的代碼。

string str = "abc"; 
dt.Columns.Add("ColumnName").Expression = "'" + str + "'"; 
相關問題