using System.Collections.Generic;
public static List<Child> GetChildren() {
return new List<Child> { new Child() };
public static void Main()
Console.WriteLine("Hello World");
List<Child> originalList = GetChildren();
List<IHasChildID> orderedList = ChildOrderHelper.OrderChildren(originalList).ToList();
public interface IHasChildID
public class Child : IHasChildID
public string ChildID { get; set; }
public string GetChildID()
public class Parent : IHasChildID
public Child Child { get; set; }
public string GetChildID()
public class OtherClassID
public int ID { get; set; }
public string ChildID { get; set; }
public class SomeOtherClass : IHasChildID
public OtherClassID ID { get; set; }
public string GetChildID()
public static class ChildOrderHelper
public static IEnumerable<IHasChildID> OrderChildren(IEnumerable<IHasChildID> children)
var childrenList = children.ToList();
return childrenList.OrderBy(c => c.GetChildID()).ToList();