uso tutorial sintaxis operadores introduccion español consultas comandos c# linq lambda

c# - tutorial - Orden múltiple por con LINQ



sintaxis linq c# (1)

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

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

Esta pregunta ya tiene una respuesta aquí:

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 las cosas que no son lambda LINQ.

// code somewhere else that works and gets the desired results var foobarList = GetFooBarList(); // Abstracted out - returns List<Foobar> // 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 interesa es si se puede lograr lo mismo utilizando los métodos de extensión basados ​​en Lambda del 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 hago eso, obtengo un error de tiempo de ejecución cuando llego a la instrucción foreach. El error me dice que al menos un objeto tiene que implementar IComparible, lo cual puedo ver ya que estoy usando un tipo anónimo para el método .OrderBy ().

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