正如标题所说。我想在列表上执行和排序 - 但是在列表的子部分。确切地说,我想订购除第一个元素之外的所有元素。
编辑:为了澄清,我需要在完成所有排序后保留所有(甚至是未排序的)元素。 (即第一个项目(未排序)保留在它所处的位置(在列表的开头)并且所有后续项目都已排序)。
答案 0 :(得分:3)
我认为如果你想要最后的未分类的项目,这应该有效:
list.Take(1).Concat(list.Skip(1).OrderBy(xyz));
答案 1 :(得分:3)
您可以使用:
list.Take(1).Concat(list.Skip(1).OrderBy(predicate))
答案 2 :(得分:3)
这样的事情应该有效:
var results = list.Take(1)
.Concat(list.Skip(1).OrderBy(x => x.Something))
.ToList();
修改强>
由于发布问题已被编辑,以澄清无序项目应位于集合的“结尾”,这可以通过上面的微小更改(只需切换方法调用)来实现:< / p>
var results = list.Skip(1)
.OrderBy(x => x.Something)
.Concat(list.Take(1))
.ToList();
答案 3 :(得分:1)
您可以获取索引,并将其用作排序的一部分,而不是删除第一个项目然后将其添加回来(
)list.Select((value, index) => new { value, index })
.OrderBy(x => x.index != 0)
.ThenBy(x => x.value)
.Select(x => x.value)
.ToList()