Linq Order by 当列名是动态的并作为字符串传递给函数时

标签 linq entity-framework

我有一个 Linq( Entity Framework )查询作为

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

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

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

我怎样才能做到这一点?

任何帮助表示赞赏

最佳答案

您可以使用 Dynamic Linq :

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

关于Linq Order by 当列名是动态的并作为字符串传递给函数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8398453/

相关文章:

c# - 如何合并这两个 linq 查询的输出?

c# - 如何在 linq 中使用带有 2 个字段的 orderby?

c# - 查找具有特定汉明距离的字符串 LINQ

c# - EntityObjects 是否有允许我访问 OldValue 和 NewValue 的 PropertyChanged 事件?

c# - .Net MVC 实体和 ViewModel...相同还是独立?

entity-framework - EntityFramework.IBM.DB2 无法连接到 db2

c# - 在 linq 中构建对象 - 添加依赖于其他属性的属性

c# - 就地交集两个不同类型的集合

visual-studio - 如何为 Visual Studio 2017 安装 Entity Framework Power Tools?

c# - 如何获取 EF5.0 EntityGenerator 中实体的架构和表名?