LINQ не должен быть SQL. Это означает, что язык запросов, который является настолько независимым от источника данных, насколько это возможно. Теперь, по общему признанию, он имеет сильное смещение SQL, но это не значит просто встраивать SQL в исходный код (к счастью).
Лично я значительно предпочитает синтаксис LINQ для SQL. В частности, упорядочение в LINQ намного логичнее. Просто взглянув на порядок предложений запроса, вы можете увидеть логический порядок, в котором обрабатывается запрос. Вы начинаете с источника данных, возможно, выполняете некоторую фильтрацию, упорядочиваете и т. Д. И обычно заканчиваете проекцией или группировкой. Сравните это с SQL, где вы начинаете говорить, какие столбцы вам интересны, даже не зная, о какой таблице вы говорите.
LINQ более логичен в этом отношении, но он позволяет инструментам работать с вами лучше - если Visual Studio знает, с каких данных вы начинаете, тогда, когда вы начинаете писать предложение select
(например), оно может помочь вам с IntelliSense. Кроме того, это позволяет сделать перевод из выражений запроса LINQ в «точечную нотацию» относительно простым с использованием методов расширения, не имея компилятора, чтобы знать о каких-либо деталях того, что будет делать запрос.
Итак, с моей точки зрения: нет, LINQ будет много хуже, если бы он был рабски следовали синтаксису SQL.