comienzo con una clase básica que quiero manipular en una lista utilizando LINQ, algo como lo siguiente:múltiplos By con LINQ
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 en última instancia, descubrí a solucionar mi problema con la no lambda LINQ cosas.
// 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 estoy realmente curioso acerca de si es la misma puede realizarse utilizando los métodos de extensión basados Lambda fuera de IEnumerable genérico para lograr la misma cosa. 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 lo que me sale un error de ejecución cuando golpeo 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?
Si usted quiere saber lo que los "métodos fluidas" son correspondientes a cada posible expresión de consulta, la sección 7.15.2 de la especificación de lectura. –
@Eric Lippert, hay una hoja de trucos de traducción de C# 3.0 Query Expression, escrita por Bart Desmet, que encontré muy útil como referencia rápida: http://bartdesmet.net/blogs/bart/archive/2008/08/30/ c-3-0-query-expression-translation-cheat-sheet.aspx. –
posible duplicado de [Múltiple "ordene por" en LINQ] (http://stackoverflow.com/questions/298725/multiple-order-by-in-linq) – jrummell