我尝试对现有列表ICollection<T>
进行排序但失败了。以下是我尝试过的内容。没有错误但也没有效果。
....
ObjectList.OrderBy(x=>x.Name);
....
我是否完全不使用上述方式对列表进行排序?我也尝试过:
ObjectList = ObjectList.OrderBy(x=>x.Name);
但这更糟糕,因为它给我的错误说我错过了演员。
是否可以对相同的列表进行排序,而不是将其分配给另一个变量?
答案 0 :(得分:3)
简答为否,如果不将ICollection分配给另一个变量,则无法对其进行排序。 ICollection接口不会暴露任何方式。
但是,在您的示例中使用OrderBy进行排序的工作方式与切除相同,但返回IEnumerable而不是ICollection。
我会将它分配给另一个变量,如:
var sortedList = ObjectList.OrderBy(x=>x.Name);
答案 1 :(得分:1)
你必须在那里添加.ToList()因为OrderBy返回一个IEnumerable,所以你试着:
ObjectList = ObjectList.OrderBy(x=>x.Name). ToList() ;
答案 2 :(得分:1)
这种通用排序操作不存在,因为不清楚如何对通用集合进行排序。如果您的集合是List<T>
,则可以在那里使用Sort方法(因为可以对列表进行排序)。但是,其他收藏品如哈希集只是不允许排序,因此如果您希望对集合进行排序,则必须创建一个新集合。