Хотя и очень хорошо знаю синтаксис SQL, но не использую его в LINQ по нескольким причинам:
1. Для оптимизации генерируемых LINQ2SQL запросов и для сборки вложенных запросов из других подзапросов по различным условиям пользуюсь самописным билдером выражений (условие поддерживает вложенные подзапросы из различных сущностей). Поэтому результирующие выражение в LINQ выглядят следующим образом:
Expression<Func<T, bool>> condition = ...
var linqexpr = dc.Entity.Where(condition);
2. использую собственные расширения LINQ2SQL для генерации SQL запросов, которых нет в синтаксисе LINQ-а, например, выборку иерархических объектов:
dc.Hierarchical.Descendants(t => t.Id, t => t.ParentId, ...) // производит выборку дерева элементов с полем ключа Id и полем ключа родителя ParentId;
Таким образом для меня использование синтаксиса LINQ накладывает большие ограничения на использование функциональности поставщика запросов.