Мне нужна небольшая помощь для создания универсального метода для извлечения данных из dbcontext и передачи параметра orderby в качестве параметра.Динамическое выражение для предложения generic orderby
Так далеко удалось это сделать:
public virtual Task<List<T>> GetListAsync(Expression<Func<T, object>> orderby, bool asc = true)
{
IQueryable<T> dbQuery = _dbContext.Set<T>();
if (orderby != null)
{
UnaryExpression UnExp = (UnaryExpression)orderby.Body;
MemberExpression Exp = (MemberExpression)UnExp.Operand;
var propInfo = (PropertyInfo)Exp.Member;
//need new sort expression
dbQuery = asc ? dbQuery.OrderBy(orderby) : dbQuery.OrderByDescending(orderby);
}
return dbQuery.ToListAsync<T>();
}
часть, где мне нужна помощь в том, как преобразовать
Expression<Func<T, object>> orderby
в
Expression<Func<T, "propInfo.PropertyType">> sortExpression
на runtime.I хотите избегайте отправки дополнительного типа только для выражения сортировки.
Expression<Func<T, TKey>> orderby
С текущей реализации нет никаких проблем с параметром строки как
var data = await GetListAsync(it => it.Name);
, но если я пытаюсь разобраться с помощью параметра INT
var data = await GetListAsync(it => it.Id);
проливает exception.Is, что я хочу достижимо? Любая помощь и советы приветствуются. Благодаря
Рекомендация: положите свое решение в качестве ответа, чтобы вопрос не отображался как «неотвеченный». Вы также можете получить репутацию от upvotes таким образом. – DarkWanderer