タイトル通り。リストで実行して並べ替えたいのですが、リストのサブセクションで実行します。正確には、最初の要素を除いてすべての要素を並べ替えたいと思います。
編集:明確にするために、すべての並べ替えが完了したら、すべての (並べ替えられていない要素も含めて) 要素を保持する必要があります。(つまり、最初の項目 (ソートされていない) が現在の位置 (リストの先頭) に残り、その後のすべての項目がソートされます)。
タイトル通り。リストで実行して並べ替えたいのですが、リストのサブセクションで実行します。正確には、最初の要素を除いてすべての要素を並べ替えたいと思います。
編集:明確にするために、すべての並べ替えが完了したら、すべての (並べ替えられていない要素も含めて) 要素を保持する必要があります。(つまり、最初の項目 (ソートされていない) が現在の位置 (リストの先頭) に残り、その後のすべての項目がソートされます)。
最初の未分類のアイテムを最後に必要な場合は、これでうまくいくと思います。
list.Take(1).Concat(list.Skip(1).OrderBy(xyz));
あなたが使用することができます:
list.Take(1).Concat(list.Skip(1).OrderBy(predicate))
このようなものが動作するはずです:
var results = list.Take(1)
.Concat(list.Skip(1).OrderBy(x => x.Something))
.ToList();
編集:
質問の投稿は、順序付けられていないアイテムがコレクションの「最後」にある必要があることを明確にするために編集されているため、上記を少し変更するだけで実現できます (メソッド呼び出しを切り替えるだけです):
var results = list.Skip(1)
.OrderBy(x => x.Something)
.Concat(list.Take(1))
.ToList();
最初の項目を削除してから再度追加するのではなく(他の優れた回答が示している方法)、インデックスを取得して、並べ替えの一部として使用できます。
list.Select((value, index) => new { value, index })
.OrderBy(x => x.index != 0)
.ThenBy(x => x.value)
.Select(x => x.value)
.ToList()