有条件地更新DataTable中数据的最快方法是什么

本文关键字:方法 是什么 数据 更新 DataTable 有条件 | 更新日期: 2023-09-27 18:21:35

我有一个充满数据的DataTable,有3列——col1col2col3

col3中的值大于1000或小于-1000时,我必须更新col3中的数据(将其设置为null)。我尝试迭代每一行并检查这个条件,但速度太慢了。如何提高速度?

有条件地更新DataTable中数据的最快方法是什么

假定列的类型为int,则可以使用Linq:

var rowsToUpdate = data.AsEnumerable()
    .Where(r => r.Field<int?>("col3") > 1000 || r.Field<int?>("col3") < -1000);
foreach( DataRow row in rowsToUpdate )
    row.SetField<int?>("col3", null);

字段方法支持可为null的类型,SetField方法允许使用null

一点微优化,只是因为你提到它太慢了:

var rowsToUpdate = data.AsEnumerable()
    .Where(r => {
        var val = r.Field<int?>("col3") ?? 0;
        return val > 1000 || val < -1000;
    });