Maison > développement back-end > C++ > Comment implémenter la commande dynamique LINQ pour `` ienumerable 'et «ienumerable»?

Comment implémenter la commande dynamique LINQ pour `` ienumerable 'et «ienumerable»?

Susan Sarandon
Libérer: 2025-02-02 22:36:12
original
165 Les gens l'ont consulté

How to Implement Dynamic LINQ Ordering for `IEnumerable` and `IEnumerable`?

/ Le tri dynamique linq IEnumerable<T> IQueryable<T>

Méthode d'expansion

IEnumerable<T> Bien que le LINQ dynamique fournit une syntaxe pratique pour le tri , les fonctions similaires ne sont pas directement applicables à

. Pour résoudre ce problème, vous pouvez utiliser les méthodes d'extension suivantes pour ajouter

, IQueryable<T>, IEnumerable<T> et IEnumerable<T> fonction: OrderBy OrderByDescending ThenBy Utiliser ThenByDescending

avec
public static IOrderedQueryable<T> OrderBy<T>(
    this IQueryable<T> source,
    string property)
{
    return ApplyOrder<T>(source, property, "OrderBy");
}

public static IOrderedQueryable<T> OrderByDescending<T>(
    this IQueryable<T> source,
    string property)
{
    return ApplyOrder<T>(source, property, "OrderByDescending");
}

public static IOrderedQueryable<T> ThenBy<T>(
    this IOrderedQueryable<T> source,
    string property)
{
    return ApplyOrder<T>(source, property, "ThenBy");
}

public static IOrderedQueryable<T> ThenByDescending<T>(
    this IOrderedQueryable<T> source,
    string property)
{
    return ApplyOrder<T>(source, property, "ThenByDescending");
}

static IOrderedQueryable<T> ApplyOrder<T>(
    IQueryable<T> source,
    string property,
    string methodName)
{
    // 为简洁起见,省略实现
}
Copier après la connexion

Pour utiliser ces extensions avec , vous pouvez utiliser la méthode d'extension IEnumerable<T> pour la convertir en :

IEnumerable<T> <<> Utiliser AsQueryable Tri dynamique IQueryable

IEnumerable<T> items = ...;
IQueryable<T> queryableItems = items.AsQueryable();

var orderedItems = queryableItems.OrderBy("Property");
Copier après la connexion
En plus de la méthode de tri de base, vous pouvez également utiliser le tri dynamique

pour étendre davantage la fonction. Ceci est un exemple:

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal