-1

我想编写一个类似于此 SQL 查询的 LINQ 查询:

从 SomeTable 中选择 ID、标题、描述、日期

然后动态添加“OrderBy”“升序/降序”

我需要这个在 gridview 上添加排序功能,它的数据源是这个 linq 查询。

4

1 回答 1

2

您可以编写自己的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);
于 2013-09-03T21:32:44.813 回答