Разница между LINQ Queries и лямбда-выражением - PullRequest
8 голосов
/ 16 марта 2011

Зачем использовать лямбда-выражение, когда у нас есть LINQ-запросы, просто чтобы сократить длину кода, увеличить скорость разработки или есть какая-либо другая причина, которая может быть достигнута только лямбда-выражением, а не LINQ-запросами.

Ответы [ 2 ]

21 голосов
/ 16 марта 2011

Выражения запроса охватывают только небольшое подмножество операторов LINQ и применимы только в том случае, если в руки включено действительное выражение, а не, скажем, Func<T, bool> в качестве предиката, и в этом случае все становитсянекрасиво.Поэтому вместо того, чтобы писать:

Func<Foo, bool> predicate = ...; // Get predicate from somewhere
var query = from x in collection
            where predicate(x)
            select x;

Я бы лучше написал:

Func<Foo, bool> predicate = ...; // Get predicate from somewhere
var query = collection.Where(predicate);

Существуют и другие случаи, когда использование синтаксиса выражений без запроса проще, особенно если ваш запрос толькоиспользует один оператор.

Выражения запроса эффективно переводятся в выражения, не являющиеся запросами, поэтому все, что вы можете сделать в выражениях запросов , может быть выражено в выражениях, не являющихся запросами.Используйте выражения запросов, где они делают код более простым и более читабельным;не используйте их там, где их нет.

У меня есть дополнительная информация о том, как работают выражения запросов в сообщении в блоге , которое может вас заинтересовать.

3 голосов
/ 16 марта 2011

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

Существуют некоторые методы расширения LINQ, которые не имеют аналогов в выражениях запросов LINQ, и потребует использования лямбда-выражений.Хорошим примером является Enumerable.ToLookup - если вы хотите создать ILookup, вам нужно использовать лямбда-выражения для генерации этого.

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