我一直在努力使这个工作。我希望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 和按语句动态排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8492565/