【问题标题】:DataTable.GetChanges() is it possible to get rows by reference?DataTable.GetChanges() 是否可以通过引用获取行?
【发布时间】:2016-01-23 04:02:29
【问题描述】:
Dim dtModifiedData As DataTable = dtMain.GetChanges(DataRowState.Modified)

正如函数的定义所说,它确实会在从主表中过滤后复制行。

是否可以通过引用获得它们?

【问题讨论】:

    标签: vb.net datatable


    【解决方案1】:

    是的:

    Dim modifiedRows = From row In dtMain.AsEnumerable()
                       Where row.RowState = DataRowState.Modified
    

    如果您在DataTable 中需要它,这是不可能的,因为DataRow 始终属于一个DataTable。如果您尝试将其从一个移动到另一个,则会出现异常。您需要像ImportRow 这样的方法,它使用源行中的值创建一个新的DataRow。出于同样的原因,上述 LINQ 查询中的 CopyToDataTable 也会创建新的 DataRows

    【讨论】:

    • 谢谢,您的解决方案非常适合我的问题。主要问题是我想对 modifiedRows 进行一些检查,然后将 .SetColumnError 设置为它。但是由于它们是复制的,所以我一无所获。这样一来,正如你所解释的,我也有同样的问题。
    • @misiMe:我不确定我是否理解你的评论。您可以在上面的行中使用SetColumnError。只需使用循环:For Each row In modifiedRows row.SetColumnError(0, "ErroText") Next
    猜你喜欢
    • 2018-01-05
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    相关资源
    最近更新 更多