是否可以在不使用OrderBy的情况下将一个IEnumerable转换为IOrderedEnumerable?

12 浏览
0 Comments

是否可以在不使用OrderBy的情况下将一个IEnumerable转换为IOrderedEnumerable?

假设有一个扩展方法,可以根据一个SortMethod枚举指定的多种排序方式(例如按不同的属性排序)来对IQueryable进行排序。

public static IOrderedEnumerable OrderByX(this IQueryable values,
    SortMethod? sortMethod)
{ 
    IOrderedEnumerable queryRes = null;
    switch (sortMethod)
    {
        case SortMethod.Method1:
            queryRes = values.OrderBy(a => a.Property1);
            break;
        case SortMethod.Method2:
            queryRes = values.OrderBy(a => a.Property2);
            break;
        case null:
            queryRes = values.OrderBy(a => a.DefaultProperty);
            break;
        default:
            queryRes = values.OrderBy(a => a.DefaultProperty);
            break;
    }
    return queryRes;
}

sortMethodnull的情况下(即指定不关心值的顺序),是否有一种方法可以不用执行实际的排序,而是直接将IEnumerator值按照它们的顺序传递?

我希望能够调用这个扩展方法,然后可能执行一些额外的ThenBy排序。

0