Он возвращает квадратный корень значения переменной диапазона. Для этого значение переменной диапазона передается методуMath.Sqrt (), который возвращает квадратный корень своего аргумента. Это означает, что последовательность результатов, получаемых при выполнении запроса, будет содержать квадратные корни положительных значений, хранящихся в массиве nums. Если обобщить этот принцип, то его эффективность станет вполне очевидной. Так, с помощью оператора select можно сформировать любой требующийся тип последовательности результатов, исходя из значений, получаемых из источника данных.
Ниже приведена программа, демонстрирующая другое применение оператора select. В этой программе сначала создается класс EmailAddress, содержащий два свойства. В первом из них хранится имя адресата, а во втором — адрес его электронной почты. Затем в этой программе создается массив, содержащий несколько элементов данных типа EmailAddress. И наконец, в данной программе создается список, состоящий только из адресов электронной почты, извлекаемых по запросу.
// Возвратить часть значения переменной диапазона.
using System; using System.Linq;
class EmailAddress {
public string Name { get; set; } public string Address { get; set; }
public EmailAddress(string n, string a) {
Name = n;
Address = a;
}
}
class SelectDemo2 { static void Main {
EmailAddress[] addrs = { new EmailAddress("Герберт", "Herb@HerbSchildt.com"), new EmailAddress("Tom", "Tom@HerbSchildt.com"), new EmailAddress("Capa", "Sara@HerbSchildt.com")
};
// Сформировать запрос на получение адресов
// электронной почты.
var eAddrs = from entry in addrs
select entry.Address;
Console.WriteLine("Адреса электронной почты:");
// Выполнить запрос и вывести его результаты, foreach(string s in eAddrs)
Console.WriteLine(" " + s);
}
}
Вот к какому результату приводит выполнение этой программы.
Адреса электронной почты:
Herb@HerbSchildt.com
Tom@HerbSchildt.comSara@HerbSchildt.com
Обратите особое внимание на следующий операторselect, select entry.Address;
Вместо полного значения переменной диапазона этот оператор возвращает лишь его адресную часть(Address).Это означает, что по данному запросу возвращается последовательность символьных строк, а не объектов типаEmail Address.Именно поэтому переменнаяsуказывается в циклеforeachкакstring.Ведь как пояснялось ранее, тип последовательности результатов, возвращаемых по запросу, определяется типом значения, возвращаемым операторомselect.