私は、学生を定義するクラスを持ち、その学生のすぐ後ろにプロパティ(FollowedBy)を持っています。私は、このリンケージに基づいて学生を注文する方法を探しています。カスタムIComparerを使用してポインタ値で注文する
class Student
{
public int StudentID { get; set; }
public string Name { get; set; }
public int? FollowedBy { get; set; }
}
var lstStudents = new List<Student>()
{ new Student() { StudentID = 2, Name = "Mark", FollowedBy =4 },
new Student() { StudentID = 1, Name = "Sam", FollowedBy = 2},
new Student() { StudentID = 4, Name = "Fred", FollowedBy =null } ,
new Student() { StudentID = 3, Name = "Janice", FollowedBy = 1}};
for (var s in lstStudents.OrderBy(x => ????))
{
console.Write(s.Name);
}
// The output I'm looking for
// Janice
// Sam
// Mark
// Fred
[OK]を。私はそれに言い換えるつもりです。 – Aheho
2つの要素を比較するだけで、順序を決定できるかどうかはわかりません。 JaniceとMarkを比較してください。あなたはSamを写真に持たずに誰が最初にいるのかわからないでしょう。 – Aheho
最初はソートを使うのは意味がありません。根ノードを見つけてチェーンに従います。他のグラフのトラバーサルの問題と同様です。これは、ソートとは異なり、O(n)操作です。よりシンプルで高速です。 – Servy