【发布时间】:2018-12-20 04:50:28
【问题描述】:
我正在尝试将 DataTable 分配为 dataGrid1 dataGrid1.ItemsSource = dtselect.DefaultView 的 itemsource 但它给出 System.OutOfMemoryException
我有一个包含多个 DataTable 的数据集。我在该按钮上随机创建一个按钮单击我想将数据从 DataTable 显示到 dataGrid1 但这里的问题是 DataTable 有超过 200 万行,当我单击一个按钮时,它需要超过 2gb 的内存并给我 System. OutOfMemoryException。
Button = sender as Button;
string content = button.Content.ToString();
foreach (DataTable table in dsr.Tables)
{
if (table.TableName == content)
{
dataGrid1.ItemsSource = table.DefaultView;
dtselect = table;
}
}
我希望输出更少的内存使用和显示结果而不是 System.OutOfMemoryException
【问题讨论】:
-
您尝试将这么多数据加载到 DataTable 中是有原因的吗?
-
显然,您不能在 UI 中显示 2M 行。无论如何,这有什么意义?你认为一个人可以处理 2M 行?没有。重新思考你在做什么。
-
我想在 datagrid 上显示数据以应用过滤器
-
一次读取大量数据集的基本架构是错误的。不要将整个数据库读入内存。不要显示数据然后应用过滤器。应用过滤器,读取数据并显示。如果合理的用户行为将返回超过 200 行,则使用 linq skip and take 对数据进行分页。