DataTable 在应用过滤器时丢失其值
DataTable losing its values when applying filter
我有一个缓存数据表。我正在从中创建一个新的 DataTable 并对其应用过滤器。但是,当我再次访问缓存数据表时,行会根据过滤器减少。为什么会这样?
var cachedDataTable = GetDataTableFromCache();
var newDataTable = cachedDataTable;
var filteredRows = cachedDataTable.Select("[Status Type]='test'");
newDataTable = filteredRows.CopyToDataTable();
当您执行 Select 时,可能缓存的数据表正在被覆盖。对 newDataTable 执行 Select 可能会产生不同的结果。
我们可以看到 GetDataTableFromCache() 的代码吗?我尝试复制您的代码,但它似乎在我这边运行良好。同时,您可以尝试 运行 一个 foreach 循环并一次导入一行,而不是使用 CopyToDataTable()。
var newDataTable = cachedDataTable.Clone();
var filteredRows = cachedDataTable.Select("[Status Type]='test'");
foreach (DataRow row in filteredRows)
{
newDataTable.ImportRow(row);
}
我有一个缓存数据表。我正在从中创建一个新的 DataTable 并对其应用过滤器。但是,当我再次访问缓存数据表时,行会根据过滤器减少。为什么会这样?
var cachedDataTable = GetDataTableFromCache();
var newDataTable = cachedDataTable;
var filteredRows = cachedDataTable.Select("[Status Type]='test'");
newDataTable = filteredRows.CopyToDataTable();
当您执行 Select 时,可能缓存的数据表正在被覆盖。对 newDataTable 执行 Select 可能会产生不同的结果。
我们可以看到 GetDataTableFromCache() 的代码吗?我尝试复制您的代码,但它似乎在我这边运行良好。同时,您可以尝试 运行 一个 foreach 循环并一次导入一行,而不是使用 CopyToDataTable()。
var newDataTable = cachedDataTable.Clone();
var filteredRows = cachedDataTable.Select("[Status Type]='test'");
foreach (DataRow row in filteredRows)
{
newDataTable.ImportRow(row);
}