我想编写一个类似于此 SQL 查询的 LINQ 查询:
从 SomeTable 中选择 ID、标题、描述、日期
然后动态添加“OrderBy”和“升序/降序”。
我需要这个在 gridview 上添加排序功能,它的数据源是这个 linq 查询。
我想编写一个类似于此 SQL 查询的 LINQ 查询:
从 SomeTable 中选择 ID、标题、描述、日期
然后动态添加“OrderBy”和“升序/降序”。
我需要这个在 gridview 上添加排序功能,它的数据源是这个 linq 查询。
您可以编写自己的SortBy
扩展方法,该方法采用SortDirection
.
public enum SortDirection { Ascending, Descending }
public static class Extensions
{
public static IEnumerable<TSource> SortBy<TSource, TKey>(
this IEnumerable<TSource> source,
SortDirection sortDirection,
Func<TSource, TKey> keySelector)
{
switch (sortDirection)
{
case SortDirection.Ascending:
return source.OrderBy(keySelector);
case SortDirection.Descending:
return source.OrderByDescending(keySelector);
default:
throw new ArgumentOutOfRangeException();
}
}
用法
var sortDirection = Sort.Descending; // this could be set dynamically at runtime
var sorted = new[] { 1, 2, 3 }.SortBy(SortDirection.Descending, x => x);