gpt4 book ai didi

c# - DataView.Sort 是性能瓶颈

转载 作者:行者123 更新时间:2023-11-30 21:23:37 24 4
gpt4 key购买 nike

我在 DataView.Sort 上遇到性能瓶颈。代码如下。

    /// <summary>
/// Filters the data table and returns a new data table with only the filtered rows.
/// </summary>
/// <param name="dtInput">The dt input.</param>
/// <param name="filterExpression">The filter expression.</param>
/// <returns></returns>
protected virtual DataTable FilterDataTable(DataTable dtInput, string filterExpression)
{
DataTable result = dtInput;
if (!string.IsNullOrEmpty(filterExpression) && filterExpression.Trim().Length > 0)
{
DataView view = new DataView(dtInput);
view.RowFilter = filterExpression;
view.Sort = HierarchyFieldMap.DisplayedValue;
result = view.ToTable();
}
return result;
}

关于如何改进此方法有任何想法吗?

执行大约需要 1 秒。

编辑

我在 DataView's Poor Peformance with Large RecordSets 上找到了这个链接

最佳答案

由于您返回的不是 DataView,而是 DataTable,因此您应该能够获得性能提升 - 不是数量级,而是 25-30 % - 通过使用 DataTable.Sort:

private static DataTable SortDataTable(DataTable t, 
string filterExpression,
string sortExpression)
{
DataTable t1 = t.Clone();
t1.BeginLoadData();
foreach (DataRow r in t.Select(filterExpression, sortExpression))
{
t1.Rows.Add(r.ItemArray);
}
t1.EndLoadData();

return t1;
}

大部分时间都在将数据复制到新表中。如果您可以避免创建新表并使用 DataTable.Select 返回的 DataRow 数组,您可以获得相当大的改进。

关于c# - DataView.Sort 是性能瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com