IEnumerable<T>
/ IQueryable<T>
的動態LINQ排序
IEnumerable<T>
的擴展方法
雖然動態LINQ為IQueryable<T>
排序提供了便捷的語法,但類似的功能並不直接適用於IEnumerable<T>
。為了解決這個問題,您可以使用以下擴展方法,為IEnumerable<T>
添加OrderBy
、OrderByDescending
、ThenBy
和ThenByDescending
功能:
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) { // 为简洁起见,省略实现 }
與IEnumerable<T>
一起使用
要將這些擴展方法與IEnumerable<T>
一起使用,您可以使用AsQueryable
擴展方法將其轉換為IQueryable
:
IEnumerable<T> items = ...; IQueryable<T> queryableItems = items.AsQueryable(); var orderedItems = queryableItems.OrderBy("Property");
使用IEnumerable<dynamic>
進行動態排序
除了基本的排序方法外,您還可以使用IEnumerable<dynamic>
上的動態排序來進一步擴展功能。這是一個示例:
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");
以上是如何實現' IEnumerable”和`ienumerable'的動態LINQ訂購?的詳細內容。更多資訊請關注PHP中文網其他相關文章!