|
Программирование >> Программирование с использованием ajax
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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |