我正在写一个小的C#应用程序主要是为了好玩,并且有一个DataGridView来显示一些数据,它绑定到BindingList。从我决定让表格可排序的那一刻起,乐趣就开始了,这就是使用 BindingList 的原因。据我了解,在 BindingList 中没有标准的实现,但是 msdn 有文章涵盖了这个(关于实现 BindingList 的排序和查找)。长话短说,在他们的实施中,有几行会引起麻烦:
SomeClass tmp;
for(...)
{
tmp = this[i]; //fast
this[i] = this[position]; //slow
this[position] = tmp; //slow
}
正如评论所示,第一个任务不需要太多时间,但其他两个真的很慢。我不明白它背后的原因,但因为它排序列表 50 左右的元素大约需要两秒钟。好吧,我可以使用一些解决方法,但它似乎有点难看。此外,我真的很想知道是什么导致了这种行为。