Я начинаю этот вопрос после обсуждения, которое началось (в комментариях) по другому вопросу StackOverflow, и я заинтригован, чтобы узнать ответ. Учитывая следующее выражение:
var objects = RequestObjects.Where(r => r.RequestDate > ListOfDates.Max());
Будет ли какое-либо преимущество (производительность) перемещать оценку ListOfDates.Max()
из предложения Where в этом случае или будет 1. компилятор или 2. JIT оптимизировать это?
Я считаю, что С# будет делать постоянную фальцовку во время компиляции, и можно утверждать, что ListOfDates.Max() не может быть известен во время компиляции, если только ListOfDates не является константой.
Возможно, существует другая оптимизация компилятора (или JIT), которая гарантирует, что это оценивается только один раз?