sql - Entity Framework 和动态 order by 语句

标签 sql entity-framework-4.1

我一直在努力让这个工作。我希望将 EF 语句放入一列以进行排序。我的原话是这样的:

var Query = from P in DbContext.People
                   where P.BusinessUnits.Any(BU =>BU.BusinessUnitID == businessUnitId)
                   orderby P.LastName
                   select P;

我将其更改为以下内容:
var Query = from P in DbContext.People
                   where P.BusinessUnits.Any(BU =>BU.BusinessUnitID == businessUnitId)
                   orderby sortField
                   select P;

哪里sortField是我们希望排序的列,是一个字符串,即 LastName .但是,它似乎不起作用,它没有排序,并且输出的SQL字符串完全错误。有没有人以前做过这个工作?

最佳答案

您可以尝试使用以下类型将表达式传递给您的方法:

Expression<Func<Person, object>> expr = p => p.LastName;

然后使用 linq 扩展而不是 linq 表达式...
var Query = 
 DbContext.People
 .Where(P => P.BusinessUnits.Any(BU =>BU.BusinessUnitID == businessUnitId))
 .OrderBy(expr)
 .ToList();

关于sql - Entity Framework 和动态 order by 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8492565/

相关文章:

entity-framework - EF 代码第一个 : Treating entity like a complex type (denormalization)

sql - 创建一个应该通过连接表中其他列中的值自动生成的列

c# - ASP.NET 中每个请求的 Entity Framework 对象上下文?

many-to-many - 如何让 EF 4.1 RC 代码优先使用正确的外键?

sql - 排除匹配子查询的记录

entity-framework - EntityFramework代码优先和循环一对多引用

entity-framework-4.1 - 找不到新的 Code First Entity Framework 数据库

PHP SQL 查询构建引擎

mysql - sql select语句有3个表?

php - 如何获取第二个Query的结果