У меня есть метод как часть универсального класса для использования в контексте запроса коллекции объектов, где встречается логическое предложение в выражении, а результат упорядочен по некоторому свойству типа объекта. p>
Текущая сигнатура метода:
Код: Выделить всё
Task GetFirstWhere(Expression whereExp, Expression orderByExp)
Пример реализации:
Код: Выделить всё
public async Task GetFirstWhere(Expression whereExp, Expression orderByExp) {
return await _entities.Where(whereExp)
.OrderByDescending(orderByExp) // I would like to use any valid orderByExp type here
.FirstOrDefaultAsync();
}
Для использования в таких сценариях, как:
Код: Выделить всё
var foundArticleTag = await _tags.GetFirstWhere(
tag => tag.Name == articleTag,
tag => tag.CreatedOn);
Я бы хотел, чтобы функция orderByExp использовала любой допустимый тип свойства T, а не явно DateTime. Я бы предпочел не делать тип динамическим, чтобы можно было использовать только допустимые типы свойств T. Я предполагаю, что для этого необходимо отражение, хотя я не уверен, как обеспечить соблюдение ограничения типа.
Подробнее здесь:
https://stackoverflow.com/questions/626 ... expression