Pedido múltiple por con LINQ

Comienzo con una clase básica que quiero manipular en una lista usando LINQ, algo como lo siguiente:

public class FooBar { public virtual int Id { get; set; } public virtual string Foo{ get; set; } public virtual string Bar{ get; set; } } 

Esto es lo que finalmente descubrí para resolver mi problema usando el material LINQ no lambda.

 // code somewhere else that works and gets the desired results var foobarList = GetFooBarList(); // Abstracted out - returns List // Interesting piece of code that I want to examine var resultSet = from foobars in foobarList orderby foobars.Foo, foobars.Bar select foobars; // Iterate and do something interesting foreach (var foobar in resultSet) { // Do some code } 

Lo que realmente me llama la atención es si lo mismo se puede lograr usando los métodos de extensión basados ​​en Lambda fuera de IEnumerable genérico para lograr lo mismo. Google me dice que puedo hacer algo como lo siguiente para lograrlo

 var resultSet = foobarList.OrderBy(x => new {x.Foo, x.Bar}) .Select(x=>x); 

Sin embargo, si lo hago, obtengo un error de tiempo de ejecución cuando toco la instrucción foreach. El error me dice que al menos un objeto tiene que implementar IComparible, lo que puedo ver ya que estoy usando un tipo anónimo para el método .OrderBy ().

Entonces, ¿hay alguna manera de lograr lo que quiero usando la forma Lambda?

Puede usar los métodos de extensión ThenBy y ThenByDescending :

 foobarList.OrderBy(x => x.Foo).ThenBy( x => x.Bar)