Синтаксис LINQ против синтаксиса SQL - PullRequest
3 голосов
/ 13 октября 2009

Почему Андрес Хейлсберг разработал синтаксис LINQ, отличный от синтаксиса SQL (в результате чего программистам пришлось потратить время на изучение совершенно нового)?

Не лучше ли использовать тот же синтаксис, что и в SQL?

Ответы [ 3 ]

21 голосов
/ 13 октября 2009

LINQ не предназначен для SQL. Он предназначен для языка запросов, который настолько независим от источника данных, насколько это возможно. По общему признанию у этого есть сильный уклон SQL, но это не означает, что он просто встраивает SQL в исходный код (к счастью).

Лично я значительно предпочитаю синтаксис LINQ SQL. В частности, порядок в LINQ намного более логичен. Просто взглянув на порядок предложений запроса, вы можете увидеть логический порядок, в котором обрабатывается запрос. Вы начинаете с источника данных, возможно, выполняете некоторую фильтрацию, упорядочивание и т. Д. И обычно заканчиваете проекцией или группировкой. Сравните это с SQL, где вы начинаете говорить, какие столбцы вам интересны, даже не зная, о какой таблице вы говорите.

Мало того, что LINQ более логичен в этом отношении, но и позволяет инструментам работать с вами лучше - если Visual Studio знает, с какими данными вы начинаете, то когда вы начинаете писать предложение select (например), оно может помочь вам с IntelliSense. Кроме того, он позволяет относительно просто переводить выражения запроса LINQ в «точечную нотацию» с использованием методов расширения, при этом компилятору не нужно знать какие-либо подробности того, что на самом деле будет делать запрос.

Так что с моей точки зрения: нет, LINQ был бы намного хуже , если бы он рабски следовал синтаксису SQL.

5 голосов
/ 13 октября 2009

Во-первых, выберите свой вкус SQL - их несколько! (T-, PL- и т. Д.).

В конечном счете, есть сходства и различия. Многие изменения LINQ имеют смысл больше смысла - то есть выбор источника (FROM) перед попыткой фильтрации (WHERE) / проекции (SELECT), что позволяет улучшить статический анализ и т.д. ) и более естественный синтаксис понимания запросов. Это помогает как разработчику, так и компилятору, поэтому я счастлив.

2 голосов
/ 13 октября 2009

Проанализировать выражение проще, если в его начале указаны исходные данные.

Из-за этого VS обеспечивает завершение кода даже для частично написанных запросов LINQ (отличная функция IMO).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...