После оператораletпеременнаяchrArrayможет использоваться в остальных операторах, составляющих запрос. А поскольку все массивы в C# преобразуются в типIEnumerable,то переменнуюchrArrayможно использовать в качестве источника данных для запроса во втором, вложенном оператореfrom.Именно это и происходит в рассматриваемом здесь примере, где вложенный операторfromслужит для перечисления в массиве отдельных символов, которые затем сортируются по нарастающей и возвращаются в виде конечного результата.

Операторletможет также использоваться для хранения неперечислимого значения. В качестве примера ниже приведен более эффективный вариант формирования запроса в программеIntoDemoиз предыдущего раздела.

var webAddrs = from addr in websites

let idx = addr.LastlndexOf('.') where idx != -1

group addr by addr.Substring(idx) into ws where ws.Count() > 2 select ws;

В этом варианте индекс последнего вхождения символа точки в строку присваивается переменнойidx.Данное значение затем используется в методеSubstring ().Благодаря этому исключается необходимость дважды искать символ точки в строке.

Объединение двух последовательностей с помощью оператора join

Когда приходится иметь дело с базами данных, то зачастую требуется формировать последовательность, увязывающую данные из разных источников. Например, в Интернет-магазине может быть организована одна база данных, связывающая наименование товара с его порядковым номером, и другая база данных, связывающая порядковый номер товара с состоянием его запасов на складе. В подобной ситуации может возникнуть потребность составить список, в котором состояние запасов товаров на складе отображается по их наименованию, а не порядковому номеру. Для этой цели придется каким-то образом "увязать" данные из двух разных источников (баз данных). И это нетрудно сделать с помощью такого средства LINQ, как оператор join.

Ниже приведена общая форма оператораjoin(совместно с операторомfrom).

fromпеременная_диапазона_Аinисточник_данных_Аjoinпеременная_диапазона_Вinисточник_данных_В

onпеременная_диапазона_А. свойствоequalsпеременная_диапазона_В.свойство

Перейти на страницу:

Похожие книги