Программирование >>  Программирование с использованием ajax 

1 ... 269 270 271 [ 272 ] 273 274 275 ... 396


new Customer { ID= H , City= Istanbul , Country= Turkey ,

Region= Asia , Sales=2222 }, new Customer { ID= I , City= Shanghai , Country= China ,

Region= Asia , Sales=llll }, new Customer { ID= J , City= Lagos , Country= Nigeria ,

Region= Africa , Sales=1000 }, new Customer { ID= K , City= Mexico City , Country= Mexico ,

Region= North America , Sales=2000 }, new Customer { ID= L , City= Jakarta , Country= Indonesia ,

Region= Asia , Sales=3000 }, new Customer { ID= M , City= Tokyo , Country= Japan ,

Region= Asia , Sales=4000 }, new Customer { ID= N , City= Los Angeles , Country= USA ,

Region= North America , Sales=5000 }, new Customer { ID= 0 , City= Cairo , Country= Egypt ,

Region= Africa , Sales=6000 }, new Customer { ID= P , City= Tehran , Country= Iran ,

Region= Asia , Sales=7000 }, new Customer { ID= Q , City= London , Country= UK ,

Region= Europe , Sales=8000 }, new Customer { ID= R , City= Beijing , Country= China ,

Region= Asia , Sales=9000 }, new Customer { ID= S , City= Bogot б , Country= Colombia ,

Region= South America , Sales=1001 }, new Customer { ID= T , City= Lima , Country= Peru ,

Region= South America , Sales=2002 }

var queryResults =

from с in customers where c.Region == Asia select с

Console.WriteLine( Заказчики в стране Asia: );

foreach (Customer с in queryResults)

Console.WriteLine(c) ;

Console.Write( Программа завершена, нажмите Enter для продолжения: Console.ReadLine();

4. Откомпилируйте и запустите программу. Ниже показан результирующий список клиентов из Азии:

Заказчики в стране Asia:

ID: В Город: Mumbai Страна: India Регион: Asia Продажи: 8888 ID: С Город: Karachi Страна: Pakistan Регион: Asia Продажи: 7777 ID: D Город: Delhi Страна: India Регион: Asia Продажи: 6666 ID: G Город: Seoul Страна: Korea Регион: Asia Продажи: 3333 ID: Н Город: Istanbul Страна: Turkey Регион: Asia Продажи: 2222 ID: I Город: Shanghai Страна: China Регион: Asia Продажи: 1111 ID: L Город: Jakarta Страна: Indonesia Регион: Asia Продажи: 3000 ID: М Город: Tokyo Страна: Japan Регион: Asia Продажи: 4000 ID: Р Город: Tehran Страна: Iran Регион: Asia Продажи: 7000 ID: R Город: Beijing Страна: China Регион: Asia Продажи: 9000 Программа завершена, нажмите Enter для продолжения:



Описание полученных результатов

в определении класса Customer используется средство автоматических свойств С# 3.0 при объявлении общедоступных свойств (ID, City, Country, Region, Sales) класса Customer, не прибегая к явному кодированию приватных переменных экземпляра и кода set/get для каждого свойства:

class Customer {

public string ID { get; set; } public string City { get; set; }

Единственный дополнительный метод, который придется закодировать в классе Customer - это переопределение метода ToString (), выдающего строковое представление для экземпляра Customer:

public override string ToString () {

return ID: + ID + Город: + City + Страна: + Country + Регион: + Region + Продажи: + Sales;

Метод ToStringO используется для упрощения вывода результатов запроса, что будет показано чуть позже в этом разделе.

В методе Main () класса Program создается строго типизированная коллекция типа Customer с использованием синтаксиса инициализации коллекций С# 3.0, чтобы избежать необходимости кодировать метод-конструктор и вызывать конструктор для создания каждого члена списка:

List < Customer > customers = new List < Customer > {

new Customer { ID= A , City= New York , Country= USA ,

Region= North America , Sales=9999}, new Customer { ID= B , City= Mumbai , Country= India ,

Region= Asia , Sales=8888 },

Ваши заказчики разбросаны по всему миру, и в данных присутствует достаточно географической информации, чтобы сформулировать интересные критерии выборки и группирования запросов.

По-прежнему в методе Main () создается оператор запроса - в данном случае для выборки заказчиков из Азии:

var queryResults =

from с in customers where с.Region == Asia select с

Этот запрос должен быть хорошо знаком: это тот же LINQ-запрос from. . . where. . .select, который применялся в других примерах, но с тем отличием, что каждый элемент в результирующем списке представляет собой полноценный объект (Customer), а не простую строку или целое число. Затем в цикле foreach выводятся результаты:

Console.WriteLine( Заказчики в стране Asia: );

foreach (Customer с in queryResults)



Цикл foreach здесь слегка отличается от аналогичных циклов в предыдущих примерах. Поскольку известно, что запрашиваются объекты Customer, переменная итерации явно объявляется, как относящаяся к типу Customer:

foreach (Customer с in queryResults)

Переменную с можно было бы объявить с ключевым словом var, и компилятор вывел бы тип переменной итерации - Customer, но явное объявление делает код более понятным для читателя-человека.

Внутри самого цикла вы просто пишете

Console.WriteLine(с);

вместо явной печати полей Customer, потому что в класс Customer было добавлено переопределение для метода ToStringO. Если не предоставить переопределение ToString О , метод ToString () по умолчанию просто напечатал бы имя типа, как показано ниже:

Заказчики в стране Asia:

BegVCSharp 2 6 7 QueryComplexObj ects.Customer BegVCSharp 26 7 QueryComplexOb3ects.Customer BegVCSharp 2 6 7 QueryComplexObj ects.Customer BegVCSharp 26 7 QueryComplexOb]ects.Customer BegVCSharp 2 6 7 QueryComplexOb3 ects.Customer BegVCSharp 2 6 7 QueryComplexObj ects.Customer BegVCSharp 2 6 7 QueryComplexObj ects.Customer BegVCSharp 2 6 7 QueryComplexObj ects.Customer BegVCSharp 2 6 7 QueryComplexObj ects.Customer BegVCSharp 2 6 7 QueryComplexOb]ects.Customer Программа завершена, нажмите Enter для продолжения:

Это совсем не то, что нужно! Разумеется, можно было бы явно вывести необходимые свойства Customer:

Console.WriteLine( Заказчик {0}: {1}, {2} , c.ID, с.City, с.Country);

Однако если интересует только несколько свойств объекта, было бы неэффективно извлекать в запросе весь объект целиком. К счастью, LINQ позволяет просто создать результаты запроса, которые содержат только нужные элементы - через проекцию, с которой мы поэкспериментируем в следующем разделе.

Проекция: создание новых объектов в запросах

Проекция - это технический термин, означающий создание новых типов данных из других типов данных в запросе LINQ. Ключевое слово select представляет собой операцию проекции, которая использовалась в предшествующих примерах. Если вы знакомы с ключевым словом SELECT в языке запросов SQL, то вы уже знакомы и с операцией выбора определенного поля из объекта данных, в противоположность выбору всего объекта целиком. В LINQ также можно это делать; например, чтобы выбрать только поле City из списка Customer в предыдущем примере, просто измените конструкцию select в операторе запроса, чтобы она ссылалась только на свойство City:

var queryResults =

from с in customers where c.Region == Asia select c.City



1 ... 269 270 271 [ 272 ] 273 274 275 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика