Как использовать метод LINQ при генерации `Expression '?C#

Место общения программистов C#
Anonymous
Как использовать метод LINQ при генерации `Expression '?

Сообщение Anonymous »

Я создаю метод для генерации динамического сортировки метода запроса. Вот моя функция: < /p>

Код: Выделить всё

    public static IAsyncEnumerable SortByColumn(IQueryable queryable, string? sortKey, string? sortType)
{
if (sortType == null || sortKey == null)
return queryable.AsAsyncEnumerable();

var parameter = Expression.Parameter(typeof(T), "u");

var member = sortKey.Split('.')
.Aggregate((Expression)parameter, Expression.PropertyOrField);
var converted = Expression.Convert(member, typeof(object));

LambdaExpression orderByExp = Expression.Lambda(converted, parameter);

Expression exp = (Expression)orderByExp;

return sortType.ToLower() == "asc"
? queryable.OrderBy(exp).AsAsyncEnumerable()
: queryable.OrderByDescending(exp).AsAsyncEnumerable();
}
< /code>
sortKey
- это поле или имя свойства, но в некоторых случаях я хочу передать метод LINQ для сортировки моего результата; Например: < /p>

Код: Выделить всё

NestedItems.FirstOrDefault(n=>n.Name)
< /code>
I should change the form of member
переменная, чтобы распознать, что такое Sortkey , и я ищу лучшее решение для завершения этого шага. Так что мне бы понравилось слышать о вашей идее.

Подробнее здесь: https://stackoverflow.com/questions/797 ... expression

Вернуться в «C#»