C# подзапрос лямбда-выражение


#1

Что такое подзапрос, если речь идёт о лямбда-выражениях и LINQ в C#? Препод говорил что-то о подзапросах на паре, тема была LINQ лямбды C#, но я толком не понял ничего. Простыми словами расскажите пожалуйста что это такое


#2

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

Вот пример подзапроса, который упорядочивает фамилии музыкантов по алфавиту:

string[] musicians = { "Bob Marley", "Freddy Mercury", "David Gilmour" };
IEnumerable auery = musicians.OrderBy ( x => x.Split(),Last() );

Подзапросы используются потому что в них можно подставить любое допустимое выражение C# в первую часть лямбда-выражения. Подзапрос - это всего лишь ещё одно выражение C#. По этому для подзапросов работают те же правила что и для лямбда-выражений. Область видимости подзапроса ограничивается областью видимосте содержащим его выражением, при этом он может ссылаться на внешний аргумент лямбда-выражения.

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