suppose que j'ai une collection de la forme: Je peux trier cette liste via prénom strong> à l'aide de: p> Je voudrais faire cela à l'intérieur d'une fonction, de sorte que je puisse passer le paramètre de recherche souhaité. Quelque chose comme: p> évidemment ici, je ne peux pas passer dans le champ de recherche souhaité de cette façon, mais est-il possible de faire ce que je demande? P> p> p >
4 Réponses :
Il me semble que vous pouvez utiliser Func <> pour pouvoir utiliser à la commande dynamique par. p> lisez le message suivant pour mieux comprendre p> Ordre dynamique par Linq P> P>
Cela ne fait rien d'autre que de crée plus de CIL et rend l'utilisateur de type texte pour obtenir la même chose
au lieu d'écrire une autre enveloppe sur Linq Utilisez .Orderby () code> ou
.sort () code> méthode et appelant que vous souhaitez trier, utilisez Linq
Eckby () code> ou
.sort () code> méthode
Trier () code> Comme p>
//If you want to sort collection by Id then
myMembers.Sort(x => x.Id);
//If you want to sort collection by FirstName then
myMembers.Sort(x => x.FirstName);
...
Pourquoi ne pas simplement utiliser la fonction intégrée?
myMembers.OrderByWrapper(m => m.FirstName)
Vous pouvez créer une méthode d'extension générique pour cela et passer Gardez à l'esprit que vous devriez comparer les mêmes champs d'objets comparés. p> Exemple de l'utilisation P> FUNC
délégué à celui-ci, qui est utilisé comme sélecteur de clé pour incorporer méthode code>
Comparison<Member> comparison = (x, y) => x.FirstName.CompareTo(y.FirstName);
myMembers.Sort(comparison);
@Pelt fait-il répondre à votre question? Avez-vous besoin de plus d'informations ou de détails?
Vous pouvez transmettre une fonction
func code> qui contiendra l'attribut souhaité
Je ne me dérangerais pas avec une méthode pour faire cela. Il suffit d'utiliser
ienumerable.orderby code>, tel quel, ou
trier code>. et travailler sur des poissons plus gros
Ne pensez pas que vous puissiez déduire une propriété comme celle-là sans réflexion ni une autre sorcellerie. Mais une question, pourquoi utilisez-vous un prédicat de tri pour les types de base intégrés comme une chaîne dans cet exemple?
S'il vous plaît partager un exemple de ce que vous essayez de faire.
Pourquoi voulez-vous faire le tri en fonction du terme de recherche générique. C # Linq a déjà donné que LINQ
OrderBy () code> et
Trier () code> Méthodes où vous pouvez transmettre le prédicat en fonction de vos besoins. Comme
mymembers.sort (x => x.id); code> ou
myMembers.sort (x => x.firstname); code> ou
myMembers.sort (x = > x.lastname); code> Je crois que vous réinventez simplement les roues. Corrigez-moi si je me trompe ici
Quel est le problème avec
mycollection.orderby (membre => membre.id) code>? Nice et simple.
Vous pouvez suivre le mot-clé code> expressions de requête dynamique.
Qu'est-ce que un
SearchTerm code> être? Est-il demandé par l'utilisateur? Si vous souhaitez définir vos propres paramètres, vous voudrez peut-être effectuer des recherches sur la manière de mettre en œuvre un
Icomarer code>.
La raison pour laquelle je veux faire cela est, je n'ai donc pas besoin de retaper la même ligne encore et encore. J'ai créé cet exemple et ce n'est pas mon vrai cas d'utilisation ... Mes données réelles auront des dizaines de colonnes différentes de données dans la collection. Si je peux créer une fonction, je passe juste le paramètre de tri et la liste, et cela me sauvegardera de codage rigide dans un tas de lignes différentes qui rechercheront des paramètres différents.