【问题标题】:Quick sorting a list view in C#在 C# 中快速排序列表视图
【发布时间】:2023-03-15 08:12:02
【问题描述】:

我对 C# 还很陌生,并且已经被一个问题困住了一段时间。

我有一个包含列表视图的程序,列表视图有时可以从 sql server 数据库中读取、填充和排序超过 10,000 条记录。我目前正在尝试优化我的代码以提高整体运行时间和效率,因此决定尝试使用排序方法。

根据我的研究和过去的知识,我知道排序算法有很多,我最感兴趣的是快速排序,据我了解它不是最准确的,但顾名思义,最快的。

我正在考虑对列表视图进行快速排序的一种方法是通过某种方式将所有 listviewitems(记录)插入到通用列表中,然后使用 lambda 表达式在列表中对它们进行排序,然后将所有项目添加回来进入列表视图。这应该可以防止代码在 IComparer 类和列表视图之间来回跳转以对项目进行排序。

TLDR:

如何将所有 listviewitems 插入到 List 中,然后可以与快速排序算法一起使用? 有没有更好的解决方案可以在最短的时间内对列表视图进行排序?

任何帮助将不胜感激,在此先感谢!

【问题讨论】:

  • 你能让数据库为你排序记录吗?
  • 您使用的是 MVVM 架构吗?如果是这样,那么您可以使用 Linq 对 ObservableCollection 进行排序,例如。由于 UI 元素的生命周期,通过删除和替换项目在视图内部进行排序会有点慢。
  • @Didier MVVM 是指实体框架和 ADO.NET 数据库模型吗?如果是这样,那么不,我没有在这个项目中使用它,我正在尝试探索替代方法。
  • @AdilB 我可以,但我更愿意以这种方式在代码本身内进行数据处理,即使我要将此接口与我无法控制的其他人的数据库一起使用工作得很好。
  • 无 MVVM 是 WPF 的基本概念。这是实现您的 UI 并与您的模型进行通信的方式。实现 INotifyPropertyChanged、绑定、命令……

标签: c# wpf listview sorting optimization


【解决方案1】:

10000 条记录可以是大量数据一次转储到屏幕上。考虑服务器端分页。

http://www.codeproject.com/Articles/485531/ASP-NET-Pagination

提供的示例适用于 ASP.NET,但您应该能够对 MVC 和 winforms 使用类似的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多