Проверьте, имеет ли Linq IQueryable заказ, примененный

c# expression-trees linq

Вопрос

Есть ли способ узнать, имеет ли объект IQueryable OrderBy, применяемый в его дереве выражений?

Сценарий, который у меня есть, состоит в том, что в элементе управления сеткой включен пейджинг и сортировка по столбцу. Однако по умолчанию не применяется сортировка, поэтому в этом случае Linq to SQL делает ужасно огромный выбор для подсчета строк, поэтому во всех сценариях мне нужно предоставить порядок, но я должен применять только порядок по умолчанию с помощью первичного ключа если другой порядок не указан.

Так это возможно?

Принятый ответ

Вы можете узнать, проверив дерево выражений запроса с помощью пользовательского ExpressionVisitor или любого рекурсивного механизма обхода по вашему выбору.

Я чувствую, что ваш код плохо разработан. Вероятно, вы должны просто сохранить тот факт, что заказ был применен где-то как bool . Возможно, поток информации вашего приложения должен быть заперт.

Благодаря этому методу инспекции вы восстанавливаете эту информацию хакерским способом.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow