如何禁用List <t>?</t>中的排序

时间:2014-03-03 12:50:07

标签: c# list sorting

我正在使用List并对项目进行排序。

objListOrder.Sort(
delegate(Order p1, Order p2)
{
    return p1.Title.CompareTo(p2.Title);
}

我遇到了一个问题,我需要按照列表中添加的顺序禁用排序和排序,而不是按相应键的字母顺序排序。

有没有办法在排序后清除排序?

3 个答案:

答案 0 :(得分:1)

  

有没有办法在排序后清除排序?

不,列表不会保留有关其商品添加顺序的信息。

但是当然你可以在对象中添加一个额外的字段OriginalIndex,并按此字段对列表进行排序。

答案 1 :(得分:1)

  

有没有办法在排序后清除排序?

没有。当您需要使用排序列表时,请使用

var newList = objListOrder.OrderBy(p=>p.Title).ToList();

创建原始列表

的已排序副本

答案 2 :(得分:0)

这听起来像你在这里所说的是调用Sort方法没有任何影响。鉴于List<T>保证排序只是让比较器委托返回0,这有效地告诉列表不应该移动项目

delegate(Order p1, Order p2) {
    return 0;
}

请参阅Comparison<>