C# 如何在列表中禁用排序<;T>;?

C# 如何在列表中禁用排序<;T>;?,c#,list,sorting,C#,List,Sorting,我正在使用列表和排序项 objListOrder.Sort( delegate(Order p1, Order p2) { return p1.Title.CompareTo(p2.Title); } 我有一个问题,我需要禁用排序和顺序的项目,他们在列表中添加的顺序,而不是在相应的键字母顺序 是否有一种方法可以在排序后清除排序 是否有一种方法可以在排序后清除排序 否,列表不保留有关其项目添加顺序的信息 当然,您可以在对象中添加一个额外的字段,如OriginalIndex,并按此字段对列

我正在使用列表和排序项

objListOrder.Sort(
delegate(Order p1, Order p2)
{
    return p1.Title.CompareTo(p2.Title);
}
我有一个问题,我需要禁用排序和顺序的项目,他们在列表中添加的顺序,而不是在相应的键字母顺序

是否有一种方法可以在排序后清除排序

是否有一种方法可以在排序后清除排序

否,列表不保留有关其项目添加顺序的信息


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

听起来您想要的是调用
sort
方法不会产生任何影响。给定
列表
仅让比较器委托返回
0
,这有效地告诉列表不应移动项目

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

是否有一种方法可以在排序后清除排序

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

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

这将创建原始列表的已排序副本

,因此您根本不想禁用排序,您希望覆盖默认的
排序
行为-2种不同的方式。为此,您需要保持原始列表不变,并对副本进行排序。列表中没有“撤消”功能。如何使用
objListOrder
?你把它放在哪里?