フィルターを適用してからコレクションを並べ替える次のリポジトリ メソッドがあります。
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);