LINQ/LINQPad script... Autos, /.
var Owners = new [] { new { Name = "John" }, new { Name = "James" }, new { Name = "Jeff" } };
var Autos = new [] {
new { Owner = "John", Auto = "Corvette", Year = 1968 },
new { Owner = "John", Auto = "Prius", Year = 2008 },
new { Owner = "James", Auto = "F-150", Year = 2004 },
new { Owner = "James", Auto = "Cadillac", Year = 2002 },
new { Owner = "James", Auto = "Accord", Year = 2009 },
new { Owner = "Jeff", Auto = "Tesla", Year = 2010 },
new { Owner = "Jeff", Auto = "Hyundai", Year = 1996 }
};
var results = from o in Owners
join c in Autos.OrderBy( a => a.Year )
.GroupBy( g => g.Owner )
.Select( a => a.FirstOrDefault() )
on o.Name equals c.Owner
orderby o.Name descending
select new { o.Name, c.Auto, c.Year };
results.Dump();