Это Линк или Лямбда?

Я знаю, что это Linq:

var _Results = from item in _List where item.Value == 1 select item; 

И я знаю, что это Лямбда:

 var _Results = _List.Where(x => x.Value == 1); 

Примечание редактора: выше это не просто Lambda, а Linq, используя «Синтаксис метода», предикат которого является лямбдой. Чтобы быть ясным, обе приведенные выше примеры – Linq (мой исходный пост был неправильным, но я оставил ошибку, чтобы проиллюстрировать путаницу, вызвав вопрос).

Но есть ли Линк подмножество Лямбды или что?

Почему есть два, казалось бы, одинаковых технаря?

Есть ли техническая причина выбора одного над другим?

Это LINQ (с использованием синтаксиса запроса):

 var _Results = from item in _List where item.Value == 1 select item; 

Это также LINQ (с использованием синтаксиса метода):

 var _Results = _List.Where(x => x.Value == 1); 

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

И это lambda:

 x => x.Value == 1 

Когда вы решите использовать синтаксис метода, LINQ почти всегда встречается вокруг lambda-выражений. Но LINQ и lambdas – это две совершенно разные вещи, которые могут использоваться сами по себе.

Обновление. Как правильно указывает, LINQ с синтаксисом запросов также реализуется с использованием lambda-выражений (как упоминалось ранее, компилятор позволяет писать в синтаксисе запроса, но эффективно трансформирует его в синтаксис метода за вашей спиной). Это просто накапливается на том факте, что оба вкуса полностью эквивалентны и будут вести себя одинаково (например, lambda-выражения могут привести к созданию замыканий ).

Оба являются Linq. Второй использует Лямбда .

Lambdas – это встроенные типы методов, которые вы передаете как параметр функции Where во втором примере.

Разница между этими двумя синтаксисами является чисто синтаксической. Второй стиль linq с использованием вызовов методов – это то, как он работает под капотом. Первый призван быть более удобным для пользователя / проще, и компилятор преобразует его в вызовы методов за кулисами. Они должны работать одинаково для любого заданного запроса, хотя, конечно, компилятор может выбрать слабую интерпретацию сложного запроса linq, чем при преобразовании в стиль метода.

Этот файл msdn может также представлять интерес: LINQ Query Syntax и метод синтаксиса . Особое значение имеет следующее: «В целом мы рекомендуем синтаксис запроса, потому что он обычно проще и читабельнее, однако семантическая разница между синтаксисом метода и синтаксисом запроса не существует».

  • LINQ: передача lambda-выражения в качестве параметра для выполнения и возврата методом
  • Entity Framework linq query Включает () несколько дочерних объектов
  • Сортировка списка с использованием Lambda / Linq для объектов
  • Directory.GetFiles определенного расширения
  • Имя динамической таблицы в linq
  • Linq to Sql: множественные левые внешние соединения
  • Определите, содержит ли последовательность все элементы другой последовательности, используя Linq
  • LINQ: Строка строки Entity содержит любой массив строк
  • Как просмотреть LINQ Сгенерированные операторы SQL?
  • Entity Framework - «Невозможно создать постоянное значение типа« Closure type »...» error
  • Список разделов LINQ в списки из 8 членов
  • Давайте будем гением компьютера.