我一直在努力让这个工作。我希望将 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/