.net 如何使用linq for sql添加排序方向?
假设我有linq表达式q,那么我想向该查询添加一个排序:.net 如何使用linq for sql添加排序方向?,.net,linq,linq-to-sql,sorting,.net,Linq,Linq To Sql,Sorting,假设我有linq表达式q,那么我想向该查询添加一个排序: q = q.OrderBy(p => p.Total); 但对于排序,SQL有desc/asc选项,如何将其添加到上面的linq表达式中?还有另一种方法,OrderByDescending 可能有点过分,但如果您确实希望能够传递指示排序顺序的参数,可以创建一个扩展方法: public static IOrderedEnumerable<TResult> OrderBy<TResult,TKey>(this
q = q.OrderBy(p => p.Total);
但对于排序,SQL有desc/asc选项,如何将其添加到上面的linq表达式中?还有另一种方法,
OrderByDescending
可能有点过分,但如果您确实希望能够传递指示排序顺序的参数,可以创建一个扩展方法:
public static IOrderedEnumerable<TResult> OrderBy<TResult,TKey>(this IEnumerable<TResult> source, Func<TResult, TKey> keySelector, bool ascending)
{
Func<Func<TResult, TKey>, IOrderedEnumerable<TResult>> orderMethod = source.OrderBy;
if(!ascending)
orderMethod = source.OrderByDescending;
return orderMethod.Invoke(keySelector);
}
将按升序排序,对于降序,请使用:
如果要按多列排序,请使用、和方法
bool ascending = true;
list.OrderBy(item => item.Name, ascending);
q = q.OrderByDescending(p => p.Total);
q = q.OrderBy(p => p.Col1).ThenByDescending(p => p.Col2);