Linq在列名称为动态时排序,并作为字符串传递给函数

Moo*_*ons 5 linq entity-framework

我有一个Linq(实体框架)查询

function getData(string col_to_sort , bool IsAscending , int pageNo , int pageSize)
{
  context.table_name.Skip(pageNo*pageSize).Take(pageSize).ToArray();
}
Run Code Online (Sandbox Code Playgroud)

我想要的是,如果我将列的名称作为参数传递给函数和顺序,它也会对我的查询进行排序.

由于我的列名将是一个字符串,因此我们可能需要将其转换为ObjectQuery.

我怎样才能实现这一目标?

任何帮助表示赞赏

Tho*_*que 6

您可以使用Dynamic Linq:

string direction = IsAscending ? " ASC" : " DESC";
context.table_name.OrderBy(col_to_sort + direction).Skip(pageNo*pageSize).Take(pageSize).ToArray();
Run Code Online (Sandbox Code Playgroud)