我想做这个:
public void UpdateDataRowsToDataTable(string tableName, List<DataRow> rows)
{
foreach (DataRow row in rows)
{
// this method does not exist!!
_dataSet.Tables[tableName].Rows.Update(row);
}
}
我需要一个方法来查找一行(可能是主键)并将更改的行更新为DataTable中的行 .
我所知道的唯一可能是使用Select(或Find),然后迭代所有列并为它们赋予新值 . 请告诉我,这不可能是真的!
5 回答
虽然问题不是很清楚,但听起来你有一组来自一个表的行,并希望更新另一个数据表中的等效行 . 如果是这种情况,您可以使用find方法并按照建议手动更新它们,或者将新行添加到另一个表并合并它们(有两种选项可用于合并两个数据表) . 然而,合并只会在引擎盖下做同样的事情(即通过主键查找并更新列) .
另一种方法是只替换行并将其状态设置为修改
datarow.SetModified()
或者您可以删除旧的并添加新的...
如果你的数据表是相同的,你可以使用拳击来做到这一点 .
另一种选择是使用ItemArray属性来更新DataRow实例 . 唯一的问题是你仍然需要选择合适的行 . 此外,请注意您必须更改整个ItemArray而不是其元素才能拥有modification reflected in the DataTable .
无论您选择更新DataRow的方式如何,您都可以将整个内容放在扩展方法中 .
如果您使用的是dataAdapter ...