DataTable在应用过滤器时会丢失其值

时间:2015-03-26 18:01:27

标签: c# datatable

我有一个缓存的DataTable。我正在从中创建一个新的DataTable并对其应用过滤器。但是当我再次访问Cached DataTable时,行数会根据过滤器而减少。为什么会这样?

var cachedDataTable = GetDataTableFromCache();
var newDataTable = cachedDataTable;
var filteredRows = cachedDataTable.Select("[Status Type]='test'");
newDataTable  = filteredRows.CopyToDataTable();

2 个答案:

答案 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);
            }