using System.Collections.Generic;
class Test : IComparable<Test>
public int Id { get; set; }
public int ParentId { get; set; }
public bool HasParentObject { get; set; }
public int CompareTo(Test other)
if(other.HasParentObject && this.HasParentObject)
return ParentId.CompareTo(other.ParentId);
else if(other.HasParentObject)
public static void Main()
var tests = new List<Test>
new Test { Id = 1, ParentId = 0, HasParentObject = false},
new Test { Id = 2, ParentId = 1, HasParentObject = true},
new Test { Id = 3, ParentId = 2, HasParentObject = true}
foreach(var test in tests)
Console.WriteLine(test.Id);
foreach(var test in tests)
Console.WriteLine(test.Id);