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