Я знаю, что Linq-to-SQL мертв, но в любом случае, я думаю, что это действительно просто, я просто запутался в том, что магия Linq-to-SQL делает и не делает в отношении генерируемого SQL.
Если я построил дерево выражений как «myPredicate», и у меня есть что-то вроде этого:
(from request in DataContext.RequestsTable
select request).Where(myPredicate)
.OrderByDescending(item => item.changeDate)
.Take(10)
это будет работать как следующий SQL:
SELECT TOP 10 * FROM RequestsTable
WHERE (<<myPredicate equivalent>>)
ORDER BY ChangeDate DESC
Мне это просто кажется странным, потому что ".Where ()" идет после "select" в моем примере кода. Влияет ли относительное расположение «select» и «where ()» и «orderby ()» на вещи?
В качестве альтернативы, я могу сделать все это в синтаксисе sql-esque? Например, есть ли способ использовать мой предикат WHERE в альтернативном синтаксисе, что-то вроде этого?
(from request in DataContext.RequestsTable
where [somehow inject myPredicate]
order by changeDate descending
select request).Take(10)