IEnumerable<T>
/ IQueryable<T>
的动态LINQ排序
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
扩展方法将其转换为IQueryable
:
<code class="language-csharp">IEnumerable<T> items = ...; IQueryable<T> queryableItems = items.AsQueryable(); var orderedItems = queryableItems.OrderBy("Property");</code>
使用IEnumerable<dynamic>
进行动态排序
除了基本的排序方法外,您还可以使用IEnumerable<dynamic>
上的动态排序来进一步扩展功能。这是一个示例:
<code class="language-csharp">using System.Dynamic; public static IOrderedEnumerable<dynamic> OrderBy( this IEnumerable<dynamic> source, string property) { // 为简洁起见,省略实现 } // 其他排序方法 (OrderByDescending, ThenBy, ThenByDescending) IEnumerable<dynamic> data = ...; var orderedData = data.OrderBy("Property");</code>
以上是如何实现' IEnumerable”和`ienumerable'的动态LINQ订购?的详细内容。更多信息请关注PHP中文网其他相关文章!