First, you can use LINQ if you use implicit typing very carefully:
var myList = Enumerable.Range(0, 100)
.Select(index => new { A = r.Next(), B = r.Next() })
.ToList();
myList.Sort( (obj1, obj2) => obj1.A.CompareTo(obj2.A) );
Second, if you're willing to use dynamic
, type the list as a List<dynamic>
and then you can use LINQ directly.
However, I really don't see why you insist on being glued to anonymous types. Just make a nominal type and bask in the glory that is strong-typing, compile-time safety, and LINQ!