dynamique de tri dans linq
veuillez considérer ce scénario:
J'ai une liste d'une classe avec environ 50 champs.Je veux avoir une liste déroulante utilisateur peut sélectionner en fonction de ce champ liste de tri.Par exemple, si l'utilisateur sélectionne "F1" de tri de la liste selon le "F1".
Je ne veux pas trier avec if-else
pour tous les champs.Je vois ce sujet :
Le tri d'un gridview lors de la liaison de données d'une collection ou d'une liste d'objets
mais je ne peux pas utiliser de c'est réponse. Comment je peux l'utiliser Expression Tree
à cette fin?
grâce
Edit 1) :
Selon chers @Thom Smith réponse, j'ai écrit ce code:
using (NorthwindModel1.NorthwindEntities2 ent = new NorthwindModel1.NorthwindEntities2())
{
var query = from o in ent.Orders
where o.OrderID < 10257
select o;
query.OrderBy("CustomerID", SortDirection.Ascending);
GridView1.DataSource = query;
GridView1.DataBind();
}
mais il n'a pas été trié. si j'ai écrit que le code de cette façon:
GridView1.DataSource = query.OrderBy(o=>o.CustomerID);
étant de tri. où est le problème?
grâce, mais je n'ai pas wnat utiliser des bibliothèques tierces.Je veux avec .Net
Juste assez, juste le jeter là-bas...
OriginalL'auteur Arian | 2012-09-19
Vous devez vous connecter pour publier un commentaire.
OrderBy ne pas faire un lieu de tri. Il retourne une séquence qui lors de l'évaluation sera triée. Ceci est généralement fait paresseusement, sens: jusqu'à ce qu'il est énuméré, il ne rien. Votre code actuel simplement les rejets de cette importante valeur de retour. La solution est simple: récupérer la valeur de retour:
Remarque: de même, l'application "Où" ne filtre pas les données existantes: elle retourne une séquence qui quand énumérés est filtré. Donc, si vous avez été filtrage, vous auriez la même:
OriginalL'auteur Marc Gravell