我有以下存储库方法,它应用过滤器然后对集合进行排序:
public IQueryable<TE> SelectAll(Expression<Func<TE, bool>> predicate,
Expression<Func<TE, object>> sortExpression, bool orderDescending = false)
{
var list = _ctx.CreateQuery<TE>("[" + typeof(TE).Name + "]")
.AsExpandable().Where(predicate);
return orderDescending
? list.OrderByDescending(sortExpression)
: list.OrderBy(sortExpression);
}
where 谓词可以正常工作,但是如果应用 OrderBy,我们会收到以下错误:
无法将类型“System.Int32”转换为类型“System.Object”。LINQ to Entities 仅支持转换 EDM 基元或枚举类型。
编辑:这是调用代码:
var documentos = SelectAll(d => serviciosId.Contains(d.ServicioId) && d.TipoSociedadId == tipoSociedadId, d => d.Grupo);