我有一个缓存的DataTable。我正在从中创建一个新的DataTable并对其应用过滤器。但是当我再次访问Cached DataTable时,行数会根据过滤器而减少。为什么会这样?
var cachedDataTable = GetDataTableFromCache();
var newDataTable = cachedDataTable;
var filteredRows = cachedDataTable.Select("[Status Type]='test'");
newDataTable = filteredRows.CopyToDataTable();
答案 0 :(得分:0)
执行Select时,可能会覆盖cachedDataTable。在newDataTable上执行Select可能会产生不同的结果。
答案 1 :(得分:0)
我们能看到GetDataTableFromCache()的代码吗?我试过复制你的代码,但它似乎在我的最终工作正常。同时,您可以尝试运行foreach循环并一次导入一行,而不是使用CopyToDataTable()。
var newDataTable = cachedDataTable.Clone();
var filteredRows = cachedDataTable.Select("[Status Type]='test'");
foreach (DataRow row in filteredRows)
{
newDataTable.ImportRow(row);
}