2009-07-20 24 views
0

(使用Visual Studio 2005/.NET 2.0)ADO.NET - 手動填寫欄

我有正被從另一個模塊使用SQL預填充的數據集。所有的價值都很好,並且會保持不變。

但是,一旦我檢索DataSet(並將它分配給一個DataTable,因爲它是一個表集),我需要在DataTable的末尾添加一個額外的列並根據每行中的值來填充它。

作爲一個簡單的例子,讓我們說,例如:

第1列的值需要進行檢查。如果它們等於「A」,則應將新列設置爲「G」。 「B」同樣是「H」,「C」同樣是「I」。

我需要做的是循環遍歷表格,檢查每行的值並相應地填充該行的新列。

我很難找到方法來做到這一點(最具體的來說,設置DataColumn的值通過名稱或其他標識符來標識它 - 數組就可以)並且可以使用一些代碼片段或指導。

看起來相當簡單,但我找不到有關如何在任何地方查看的信息。在此先感謝...

回答

1

您可以通過編程方式創建列,然後做到這一點,利用新列的名稱,根據您需要的任何條件進行填充。

這裏有一個片段,顯示我的意思:

... 
    yourDataTable.Columns.Add("MyNewColumn"); 

    foreach (DataRow row in yourDataTable.Rows) { 
     string column1Value = row["Column1"].ToString(); 
     if (column1Value == "A") { 
      row["MyNewColumn"] = "G"; 
     } else if (column1Value == "B") { 
      row["MyNewColumn"] = "H"; 
     } else if (column1Value == "C") { 
      row["MyNewColumn"] = "I"; 
     } 
    } 
    ... 

這是你在找什麼?

-Jay

1
DataColumn dc = dt.Columns.Add("columnName", typeof(whatever)); 
foreach (DataRow dr in dt.Rows) { 
    dr[dc] = CalculateFromOtherColumns(dr); 
} 
+0

但是CalculateFromOtherColumns是做什麼的? 仍然很高興知道您可以使用您剛剛添加的DataColumn對象來引用該數據,然後使用dr [dc]。 – n2009 2009-07-21 21:16:54

+0

你說你想「根據每行中的值填充它」。 – 2009-07-21 21:23:27

0

如果comparisson很簡單,你可能想在你的數據表使用一個表達式列(檢查Columns.Add的重載更多的信息和MSDN)

否則你應該首先通過Columns.Add添加一個正常的列,使用正確的數據類型(從你寫的字符串或可能是布爾值,根據你想要在該列中的真/假類別值來判斷)

然後,對每個行:

foreach (DataRow row in table.Rows) 
    if (row["columnA"] == "A") 
    row["columnX"] = "G"; 
    else 
    row["columnX"] = "F"; 

,是的,你應該做的類型檢查,並可以使此代碼短了很多(但現在我打字上的iPhone :))

+0

良好的信息,謝謝!關鍵信息是您可以使用行對象引用特定的列。我將另一個答案標記爲「答案」,因爲它提供了更多信息。 – n2009 2009-07-21 21:15:45