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
Susan Sarandonoriginal
2025-02-02 22:36:12113parcourir

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
<code class="language-csharp">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)
{
    // 为简洁起见,省略实现
}</code>

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

<code class="language-csharp">IEnumerable<T> items = ...;
IQueryable<T> queryableItems = items.AsQueryable();

var orderedItems = queryableItems.OrderBy("Property");</code>
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:
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