// Выполнить запрос и вывести его результаты, foreach(EmailAddress е in emailList)

Console.WriteLine("    {0}:    {1}", e.Name, e.Address );

}

}

Ниже приведен результат выполнения этой программы.

• Список адресов электронной почты:

Герберт:Herb@HerbSchildt.comТом:Tom@HerbSchildt.comСара:Sara@HerbSchildt.com

Обратите особое внимание в данном запросе на следующий операторselect.

select new EmailAddress(entry.Name, entry.Email);

В этом операторе создается новый объект типаEmailAddress,содержащий имя и адрес электронной почты, получаемые из объекта типаContactlnfo,хранящегося в массивеcontacts.Но самое главное, что новые объекты типаEmailAddressсоздаются в оператореselectво время выполнения запроса.

Применение вложенных операторов from

Запрос может состоять из нескольких операторов-f г от,которые оказываются в этом случае вложенными. Такие операторыfromнаходят применение в тех случаях, когда по запросу требуется получить данные из двух разных источников. Рассмотрим простой пример, в котором два вложенных оператораfromиспользуются в запросе для циклического обращения к элементам двух разных массивов символов. В итоге по такому запросу формируется последовательность результатов, содержащая все возможные комбинации двух наборов символов.

// Использовать два вложенных оператора from для составления списка // всех возможных сочетаний букв А, В и С с буквами X, Y и Z.

using System; using System.Linq;

// Этот класс содержит результат запроса, class ChrPair {

public char First;

public char Second;

public ChrPair(char c, char c2) {

First = c;

Second = c2;

}

}

class MultipleFroms { static void Main() {

char[] chrs = { 'A', 1В',    'C'    };

char[] chrs2 = { 'X',    1Y', 'Z' };

// В первом операторе from организуется циклическое обращение //к массиву символов chrs, а во втором операторе from —

// циклическое обращение к массиву символов chrs2. var pairs = from chi in chrs

from ch2 in chrs2

select new ChrPair(chl, ch2);

Console.WriteLine("Все сочетания букв ABC и XYZ: "); foreach(var p in pairs)

Console.WriteLine("{0} {1}", p.First, p.Second);

}

}

Выполнение этого кода приводит к следующему результату.

Все сочетания букв ABC и XYZ:

А X A Y A Z В X В Y В Z С X С Y С Z

Этот пример кода начинается с создания классаChrPair,в котором содержатся результаты запроса. Затем в нем создаются два массива,chrsиchrs2, и, наконец, формируется следующий запрос для получения всех возможных комбинаций двух последовательностей результатов.

var pairs = from chi in chrs

from ch2 in chrs2

select new ChrPair(chi, ch2);

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

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