using System.Collections.Generic;
public static void Main(string[] args) {
var data = new List<A>();
var a1 = new A() {Name = "first", B = new List<B>()};
var b10 = new B() {a_pk = 10, system_date_time = DateTime.Now.AddHours(3), A = a1};
var b11 = new B() {a_pk = 11, system_date_time = DateTime.Now.AddHours(3), A = a1};
var b12 = new B() {a_pk = 12, system_date_time = DateTime.Now.AddHours(3), A = a1};
var a2 = new A() {Name = "second", B = new List<B>()};
var b20 = new B() {a_pk = 20, system_date_time = DateTime.Now.AddHours(2), A = a2};
var b21 = new B() {a_pk = 21, system_date_time = DateTime.Now.AddHours(2), A = a2};
var b22 = new B() {a_pk = 22, system_date_time = DateTime.Now.AddHours(2), A = a2};
var a3 = new A() {Name = "third", B = new List<B>()};
var b30 = new B() {a_pk = 30, system_date_time = DateTime.Now.AddHours(1), A = a3};
var b31 = new B() {a_pk = 31, system_date_time = DateTime.Now.AddHours(1), A = a3};
var b32 = new B() {a_pk = 32, system_date_time = DateTime.Now.AddHours(1), A = a3};
var allBs = data.SelectMany(x => x.B).ToList().OrderByDescending(x => x.system_date_time);
foreach (var b in allBs) {
Console.WriteLine(b.system_date_time + ":" + b.A.Name + " " + b.a_pk);
this.B = new HashSet<B>();
public virtual ICollection<B> B { get; set; }
public virtual string Name { get; set; }
public Nullable<long> a_pk { get; set; }
public Nullable<System.DateTime> system_date_time { get; set; }
public virtual A A { get; set; }