-2

这是一个 C# Windows 应用程序。

GoodTable我在内存中有 2 个数据表,我将它们称为BadTable. 行数和列数相同,列名也相同。中的所有行在BadTable大多数列中都有错误数据。我需要遍历中的所有行BadTable并将所有列中的数据替换为中匹配行中的数据GoodTable。但是,在进行更新时我需要跳过 2 个列名,我将它们SkipColumn1称为SkipColumn2.

我已经尝试了许多版本的嵌套foreach循环和嵌套 for 循环来跟踪列数,而我的结果到处都是。如果那里有任何数据库循环忍者,我将非常感谢您的帮助。

4

2 回答 2

0

像这样的东西:

        var goodTable = new DataTable();
        var badTable = new DataTable();

        // some initialization code (add columns, fill with data)...

        var columnNames = goodTable
            .Columns
            .Cast<DataColumn>()
            .Where(column => column.ColumnName != "SkipColumn1" && column.ColumnName != "SkipColumn2")
            .Select(column => column.ColumnName)
            .ToArray();

        for (var i = 0; i < goodTable.Rows.Count; i++)
        {
            foreach (var columnName in columnNames)
            {
                badTable.Rows[i][columnName] = goodTable.Rows[i][columnName];
            }
        }
于 2013-04-04T12:32:27.743 回答
0

这是我接受的答案,因为在我看来它是最干净和最简单的。

for (var i = 0; i < GoodDT.Rows.Count; i++)
{
    for (var x = 0; x < GoodDT.Columns.Count; x++)
    {
        if (BadDT.Columns[x].ColumnName != "skip1" && BadDT.Columns[x].ColumnName != "skip2")
        {
            BadDT.Rows[i][x] = GoodDT.Rows[i][x];
        }
    }
}
于 2013-04-05T15:08:34.517 回答