Когда использовать лямбда-выражения вместо предложения Where в LINQ - PullRequest
6 голосов
/ 28 июня 2009

Я действительно копался в LINQ, и я пытаюсь разобраться в этом бизнесе лямбда-выражений. Я просто не вижу преимущества некоторых нюансов синтаксиса. Прежде всего, мне кажется, что лямбда-выражение - это просто другой способ использования предложения Where. Почему бы мне тогда не использовать предложение Where? Является ли лямбда-выражение более эффективным?

Это просто еще одно синтаксическое дополнение для привлечения программистов из другой группы, чтобы они чувствовали себя более комфортно в C #? Существуют ли другие лучшие варианты использования лямбда-выражений, с которыми я еще не сталкивался?

Ответы [ 4 ]

9 голосов
/ 28 июня 2009

Взгляните на эту статью: Синтаксис запроса LINQ против синтаксиса метода

В общем, мы рекомендуем синтаксис запроса потому что это обычно проще и больше удобочитаемый; Однако нет смысла Разница между синтаксисом метода и синтаксис запроса. Кроме того, некоторые запросы, такие как те, которые получают количество элементов, которые соответствуют указанное условие, или это получить элемент, который имеет максимальное значение в исходной последовательности, может быть только выражается как вызовы метода. справочная документация для стандартные операторы запросов в Пространство имен System.Linq обычно использует Синтаксис метода. Поэтому даже когда начать писать запросы LINQ, полезно знать, как использовать синтаксис метода в запросах и в Сами выражения запроса.

А также этот вопрос: LINQ: Точечная запись против выражения запроса

1 голос
/ 28 июня 2009

Внутренне компилятор переведет синтаксис запроса в более явный синтаксис лямбда-выражения. Для каждого стиля нет прироста производительности, а сгенерированный код для большинства сценариев практически идентичен тому, что люди набирают вручную.

Основное различие заключается в том, что с помощью лямбда-синтаксиса вы можете связать любой метод расширения, работающий с выключением и возвратом, и IEnumerable<T>. С синтаксисом запроса вы ограничены конкретными методами расширения, явно поддерживаемыми языком (зависит от языка)

Реально использовать или не использовать синтаксис запроса - это вопрос личных предпочтений.

1 голос
/ 28 июня 2009

Читать это . Ваши LINQ-запросы будут преобразованы в лямбда-выражения компилятором во время выполнения.

0 голосов
/ 13 апреля 2012
...