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
?你把它放在哪里?