ホームページ >バックエンド開発 >C++ >「ienumerable」および「ienumerable」の動的linq順序を実装する方法は?

「ienumerable」および「ienumerable」の動的linq順序を実装する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-02-02 22:36:12167ブラウズ

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

/ダイナミックlinqソートIEnumerable<T>IQueryable<T>

拡張方法

IEnumerable<T>動的linqは並べ替えに便利な構文を提供しますが、同様の関数は

に直接適用できません。この問題を解決するために、次の拡張法を使用して

IQueryable<T>IEnumerable<T>IEnumerable<T>関数を追加できます:OrderBy OrderByDescending ThenBy ThenByDescendingと一緒に

<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>
を使用します

これらの拡張機能をで使用するには、IEnumerable<T>拡張方法を使用して

に変換できます。

IEnumerable<T> AsQueryable dynamic sorting IQueryable

を使用します
<code class="language-csharp">IEnumerable<T> items = ...;
IQueryable<T> queryableItems = items.AsQueryable();

var orderedItems = queryableItems.OrderBy("Property");</code>
基本的な並べ替え方法に加えて、

動的並べ替えを使用して関数をさらに拡張することもできます。これは例です:

以上が「ienumerable」および「ienumerable」の動的linq順序を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。