2014-01-17 76 views
1

我有一個數據表有3列,即Column1, Column2Column3與數據。我可以使用下面的代碼清除單列值。清除DataTable中的多個列值

dtTable.Rows.OfType<DataRow>(). 
     ToList(). 
     ForEach(r => r["Column1"] = DBNull.Value); 

我需要清除相同數據表中的兩列;有沒有什麼方法可以在同一行代碼中指定兩個列名?

+1

Just fyi:'List.ForEach'根本不是LINQ,它是LINQ之前已經有的'List '的一種方法。 –

回答

4

就這麼簡單:)

dtTable.Rows.OfType<DataRow>().ToList().ForEach(r => 
{ 
    r["Column1"] = DBNull.Value; 
    r["Column2"] = DBNull.Value; 
}); 
+0

謝謝,它工作! – TechDo

2

您只需要使用;到多個領域內分開{}。請嘗試以下方法

dtTable.Rows.OfType<DataRow>().ToList().ForEach(r => {r["Column1"] = DBNull.Value; r["Column2"] = DBNull.Value;}); 
5

請勿使用ToList.ForEach只是爲了能夠修改值。您正在創建一個完全多餘的全新系列。相反,你只需要一個循環。

foreach(DataRow row in dtTable.Rows) 
{ 
    // presuming nullable int-columns 
    row.SetField<int?>("Column1", null); 
    row.SetField<int?>("Column2", null); 
} 

SetField方法也支持可空類型。 「如果value爲null,則SetField方法將空值轉換爲基礎DataColumn中的Value。」

+1

'DBNull.Value'和'null'是不同的不是嗎? –

+0

@SriramSakthivel:'SetField'支持可爲空的類型。 _「如果value爲null,則SetField方法將空值轉換爲基礎DataColumn中的Value。 」_ –

+0

@TimSchmelter感謝您的信息。有沒有其他方法沒有使用循環? – TechDo

0

您可以使用

dtTable.Clear(); 

它會清除所有數據,但不能列。