(使用Visual Studio 2005 / .NET 2.0)
我有一个DataSet,它是使用SQL从另一个模块预先填充的。它中的所有值都很好,并且保持不变。
但是一旦我检索DataSet(并将其分配给DataTable,因为它是一个表集),我需要在DataTable的末尾添加一个额外的列,并根据每行中的值填充它。
作为一个简化的例子,比如说:
需要检查第1列的值。如果它们等于“A”,则新列应设置为“G”。 “B”,同样“H”,“C”同样“I”。
我需要做的是遍历表格,检查每一行的值并相应地填充该行的新列。
我无法找到执行此操作的方法(最具体地说,设置DataColumn的值,通过名称或其他标识符识别它 - 数组也可以)并且可以使用一些代码段或指导。
这看起来相当简单,但我无法找到有关如何在我看过的任何地方做到这一点的信息。提前谢谢......
答案 0 :(得分:1)
DataColumn dc = dt.Columns.Add("columnName", typeof(whatever));
foreach (DataRow dr in dt.Rows) {
dr[dc] = CalculateFromOtherColumns(dr);
}
答案 1 :(得分: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
答案 2 :(得分:0)
如果comparisson很简单,您可能需要在数据表中使用表达式列(检查Columns.Add的重载以获取更多信息和MSDN)
否则,您应该首先通过Columns.Add添加一个正常的列,使用正确的数据类型(从您编写的字符串或者布尔值,根据您希望在该列中的true / false有点值判断)
之后,在每一行上做一个foreach:
foreach (DataRow row in table.Rows)
if (row["columnA"] == "A")
row["columnX"] = "G";
else
row["columnX"] = "F";
是的,你应该进行类型检查,你可以让这段代码更短(但我现在正在iPhone上打字:))