Bonjour,
je cherche à trier une liste d'objet métier via linq en utilisant un index de colonne.
Quelqu'un a t'il une idée ?
Merci de votre aide
Version imprimable
Bonjour,
je cherche à trier une liste d'objet métier via linq en utilisant un index de colonne.
Quelqu'un a t'il une idée ?
Merci de votre aide
Code:
1
2
3 var result = from objetMetierTemporaire in collectionObjetMetier orderby objetMetier.ColonneId select objetMetierTemporaire ; var result = collectionObjetMetier.OrderBy(obj => obj.ColonneId);
Ca ?
Tu veux dire quoi par un index de colonne?
Tu veux dire l'équivalent de order by 1 en SQL ? Ce n'est pas possible directement, mais de toute façon, à quoi ça servirait ? Tu ne contrôles pas le code SQL généré, donc tu ne sais pas quelle colonne se trouve à quelle position...
A mon avis, le tri par index de colonne n'est pas fait pour être utilisé dans une application, c'est juste pour gagner du temps quand tu exécutes des requêtes SQL manuellement. Si tu sais selon quelle colonne tu veux trier, tu donnes le nom de la colonne, ça fait quand même un code plus clair...
Bonjour,
je vais définir mon contexte. je développe une application mvc4 / razor et j'utilise Jquery pour le coté IHM et notamment la datatable jquery.
je l'exploite avec une source de données ajax. je dois par conséquent gérer les tris moi même coté contrôleur. Ma source de données se résume à une liste d'objet métier que je manipule (filtre , trie ect ...)
Ma méthode coté contrôleur prend un objet qui transmet entre autre la colonne que je dois trier , je reçois un index de colonne.
je cherche une solution simple à base de Linq pour ordonner ma liste.
si je vous comprend bien Tomlev je dois associer un index à nom de ma colonne quelque chose comme :
si index = 1 alors colonne = name
si index = 2 alors colonne = first_name ect ....
et faire un orderby colonne dans ma query Linq est ce la ?
je comprend mieux.
y a t'il moyen de stocker le nom de mes colonnes dans une sorte de dictionnaire dans un ordre défini et rechercher dans ce dictionnaire la valeur à l'index I et j'ai le nom de ma colonne ?
Merci à vous
et cette méthode ?
Code:
1
2 Enumerable.OrderBy<TSource, TKey>
c'est visiblement une autre méthode de trie je pensais faire :
mais c'est qu'une autre façon de faire le trie ....Code:
1
2
3
4 From e in myList orderby macolonne .....
je cherche une solution assez souple pour ne pas faire x si sinon en fonction de mon index et mes colonnes.
y a t'il une méthode de trie qui prend en paramètre une chaine avec le nom de la colonne ?
Non, ça revient exactement au même. La syntaxe de requête Linq est convertie par le compilateur en appels aux méthodes de Enumerable ou Queryable.
Oui, mais pas directement... Jette un coup d'oeil à ça :
http://dynamiclinq.codeplex.com/
intéressant ...
j'ai trouvé ce ci :
http://www.codeproject.com/Articles/...by-column-name
il se base sur les lambas expression et ceci RadixSolutionsUtilities
je sais pas ce que c'est
Voici ma solution :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 //Trie A finir int sortOrder = Convert.ToInt32(param.iSortCol_0); Func<CourseDataSet, Object> orderByFunc = null; if (sortOrder == 0) orderByFunc = item => item.nomCours; else if (sortOrder == 1) orderByFunc = item => item.typeDeCours; else orderByFunc = item => item.nomCours; var orderedList = filteredList; string sortDir = param.sSortDir_0; if(sortDir=="asc") orderedList = filteredList.OrderBy(orderByFunc).ToList(); else orderedList = filteredList.OrderByDescending(orderByFunc).ToList();