В этом операторе указывается переменная диапазонаitemдля источника данныхitems,который представляет собой массив объектов классаItem.В классеItemинкапсулируются наименование товара и порядковый номер товара, хранящегося на складе.
Далее следует приведенный ниже операторjoin.
join entry in statusList
on item.ItemNumber equals entry.ItemNumber
В этом операторе указывается переменная диапазонаentryдля источника данныхstatusList,который представляет собой массив объектов классаInStockStatus,связывающего порядковый номер товара с состоянием его запасов на складе. Следовательно, у массивовitemsиstatusListимеется общее свойство: порядковый номер товара. Именно это свойство используется в частиon/equalsоператораjoinдля описания связи, по которой из двух разных источников данных выбираются наименования товаров, когда их порядковые номера совпадают.
И наконец, операторselectвозвращает объект классаTemp,содержащий наименование товара и состояние его запасов на складе.
select new Temp(item.Name, entry.InStock);
Таким образом, последовательность результатов, получаемая по данному запросу, состоит из объектов типаTemp.
Рассмотренный здесь пример применения оператораjoinдовольно прост. Тем не менее этот оператор поддерживает и более сложные операции с источниками данных. Например, используя совместно операторыintoиjoin,можно создать
Анонимные типы