В рамках сущности, будет ли заявление
MyDataContext.Products.OrderByDescending( (p) => p.Id ).GroupBy<Product,int>( (p) => p.ProductId ).Select( (g) => g.FirstOrDefault()).Where( (p) => p.Name.Equals("Something") );
результат в другом запросе к базе данных, чем
MyDataContext.Products.Where( (p) => p.Name.Equals("Something") ).OrderByDescending( (p) => p.Id ).GroupBy<Product,int>( (p) => p.ProductId ).Select( (g) => g.FirstOrDefault());
Другими словами, влияет ли порядок вызовов Where () и GroupBy () на окончательный запрос к БД? Или структура сущностей достаточно умна, чтобы решить эту проблему?
Причина, по которой я задаюсь вопросом, заключается в том, что в разрабатываемой системе нам необходимо отслеживать все изменения в ряду продуктов. Решение, которое мы используем для достижения этой цели, состоит в том, чтобы вставить новую строку продукта в таблицу, а не обновлять ее. Различные версии продукта затем группируются с помощью поля «ProductId». Таким образом, я хотел бы перенести логику «Группировка» на внешний метод, но при этом позволить вызывающей стороне указывать условия Where… поэтому моя цель - использовать первый подход.