Свободное выражение и выражение запроса - есть ли какие-либо преимущества одного над другим? - PullRequest
245 голосов
/ 18 октября 2008

LINQ - это одно из величайших улучшений .NET, так как оно дженериков и экономит мне массу времени и строк кода. Однако свободный синтаксис кажется мне гораздо более естественным, чем синтаксис выражения запроса.

var title = entries.Where(e => e.Approved)
    .OrderBy(e => e.Rating).Select(e => e.Title)
    .FirstOrDefault();

var query = (from e in entries
             where e.Approved
             orderby e.Rating
             select e.Title).FirstOrDefault();

Есть ли разница между ними или есть какое-то конкретное преимущество одного над другим?

Ответы [ 13 ]

4 голосов
/ 18 октября 2008

Несмотря на то, что я понимаю и мне нравится свободный формат, я пока придерживался Query для удобства чтения. Люди, только знакомящиеся с LINQ, найдут Query намного удобнее для чтения.

4 голосов
/ 18 октября 2008

Мне действительно нравится синтаксис Fluent, и я стараюсь использовать его там, где могу, но в некоторых случаях, например, когда я использую объединения, я обычно предпочитаю синтаксис запроса, в тех случаях мне легче читать, и я думаю, что некоторые люди более знакомы с синтаксисом Query (как SQL), чем с лямбдами.

3 голосов
/ 01 декабря 2010

Я только что установил стандарты нашей компании, и мы применяем методы расширения. Я думаю, что это хорошая идея, чтобы выбрать один из других, а не смешивать их в коде. Методы расширения читайте больше, как и другой код.

Синтаксис понимания не имеет всех операторов и использует круглые скобки вокруг запроса и добавляет методы расширения, в конце концов, просто просит меня использовать методы расширения с самого начала.

Но по большей части это всего лишь личные предпочтения, за некоторыми исключениями.

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