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

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

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


person Jeremy Sullivan    schedule 28.06.2009    source источник
comment
Прочтите это, прежде чем задавать такие вопросы. :)   -  person Arnis Lapsa    schedule 28.06.2009


Ответы (4)


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

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

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

person Andreas Grech    schedule 28.06.2009
comment
Блин ты меня ссылкой обыграл! :) - person ; 28.06.2009

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

person Community    schedule 28.06.2009

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

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

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

person JaredPar    schedule 28.06.2009

http://theburningmonk.com/2010/02/linq-lambda-expression-vs-query-expression/

person Sunandan Dutt    schedule 13.04.2012
comment
Вот пример того, как вы можете объединить последовательность, используя лямбда-выражения и выражения запроса: - person Sunandan Dutt; 13.04.2012
comment
Ответы, состоящие только из ссылки, не считаются полезными. Вы можете изменить свой ответ, включив в него соответствующие части связанного материала, чтобы он был здесь на том же сайте, что и вопрос. - person AakashM; 17.04.2012