Je commence avec une classe de base que je veux manipuler dans une Liste à l'aide de LINQ, quelque chose comme ce qui suit:
public class FooBar { public virtual int Id { get; set; } public virtual string Foo{ get; set; } public virtual string Bar{ get; set; } }
C'est ce que j'ai finalement trouvé pour résoudre mon problème, en utilisant le non lambda LINQ choses.
// 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 }
Ce que je suis vraiment curieux de savoir si la même chose peut être accompli en utilisant le Lambda en fonction des méthodes d'extension hors du générique de IEnumerable pour accomplir la même chose. Google me dit que je peux faire quelque chose comme ce qui suit pour l'accomplir
var resultSet = foobarList.OrderBy(x => new {x.Foo, x.Bar}) .Select(x=>x);
Cependant si je fais ce que je reçois une erreur d'exécution, quand j'appuie sur l'instruction foreach. L'erreur me dit que au moins un objet pour mettre en œuvre IComparible, je peux voir que depuis que je suis en utilisant un type anonyme pour l' .Méthode d'OrderBy ().
Donc, il y a un moyen pour accomplir ce que je veux en utilisant le Lambda?