Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何使用linq for sql添加排序方向?_.net_Linq_Linq To Sql_Sorting - Fatal编程技术网

.net 如何使用linq for sql添加排序方向?

.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

假设我有linq表达式q,那么我想向该查询添加一个排序:

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);