ダイナミックlinq orderby > on および
IQueryable<T>
LINQを使用する場合、結果セットを並べ替えることがよくあります。 LINQは、これを達成するためのおよびIEnumerable<T>
メソッドを提供します。ただし、これらのメソッドは、データソースではなく、
OrderBy
データソースを並べ替えるには、OrderByDescending
メソッドを使用してIQueryable<T>
メソッドまたはIEnumerable<T>
メソッドを適用する必要があります。ただし、に変換することは、必ずしも実行可能または効率的ではありません。
Orderbyを実装IEnumerable<T>
AsQueryable
次のコードフラグメントは、IQueryable<T>
データソースOrderBy
およびOrderByDescending
メソッドの実装を提供します:IQueryable<T>
IEnumerable<T>
または
IEnumerable<T>
統合された動的linqOrderBy
OrderByDescending
関数をさらに強化するために、これを動的LINQと統合することができます。これにより、SQLに類似した文字列としてソート式を指定できます。これは例です:
<code class="language-csharp">public static IOrderedEnumerable<T> OrderBy<T>( this IEnumerable<T> source, string property) { return ApplyOrder<T>(source, property, "OrderBy"); } public static IOrderedEnumerable<T> OrderByDescending<T>( this IEnumerable<T> source, string property) { return ApplyOrder<T>(source, property, "OrderByDescending"); } static IOrderedEnumerable<T> ApplyOrder<T>( IEnumerable<T> source, string property, string methodName) { // 此处省略部分代码,因为原代码不完整且存在错误,无法直接运行。需要补充完整的代码逻辑才能实现动态排序。 }</code>
メソッドは動的なデータソースと属性パスを入力として使用し、OrderBy
クラスを指定された属性パスとして使用して、属性アクセサーズを動的に生成します。 OrderByDescending
クラスは、効率的なキャッシュとロックメカニズムを提供し、属性アクセサが1回だけ作成されるようにします。
以上が「iQueryable」と「ienumerable」に動的linq Orderbyを実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。