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

1 ... 280 281 282 [ 283 ] 284 285 286 ... 396


static void Main(string[] args) {

NorthwindDataContext northWindDataContext = new NorthwindDataContext(); var queryResults = from с in northWindDataContext.Customers

where c.Country == USA

select new {

ID=c.CustomerID, Name=c.CompanyName, City=c.City, State=c.Region, Orders=c.Orders

5. Модифицируйте следующим образом оператор foreach для печати результатов запроса:

foreach (var item in queryResults) { Console.WriteLine(

Заказчик: {0} {1}, {2} \n{3} заказов: \tID заказа\1:ДаФа заказа , item.Name, item.City, item.State, item.Orders .Count

foreach (Order о in item.Orders) { Console.WriteLine( \t\t{0)\t{l) , o.OrderlD, o.OrderDate);

Console.WriteLine( Для продолжения нажмите Enter... ); Console.ReadLine() ;

6. Откомпилируйте и выполните программу (вы можете просто нажать F5 для запуска Start Debugging). Вы увидите информацию о заказчиках из США и их заказах, как показано ниже (представлена завершающая часть вывода; первая часть была прокручена вверх и исчезла из окна консоли):

Заказчик: Trails Head Gourmet Provisioners Kirkland, WA 3 заказов: ID заказа Дата заказа

10574 6/19/1997 12:00:00 AM

10577 6/23/1997 12:00:00 AM

10822 1/8/1998 12:00:00 AM

Customer: White Clover Markets Seattle, WA 14 заказов: ID заказа Дата заказа

10269 7/31/1996 12:00:00 AM

10344 11/1/1996 12:00:00 AM

10469 3/10/1997 12:00:00 AM

10483 3/24/1997 12:00:00 AM

10504 4/11/1997 12:00:00 AM

10596 7/11/1997 12:00:00 AM

10693 10/6/1997 12:00:00 AM

10696 10/8/1997 12:00:00 AM

10723 10/30/1997 12:00:00 AM

10740 11/13/1997 12:00:00 AM

10861 1/30/1998 12:00:00 AM

10904 2/24/1998 12:00:00 AM

11032 4/17/1998 12:00:00 AM

11066 5/1/1998 12:00:00 AM Для продолжения нажмите Enter...

Как и ранее, нажмите <Enter> для завершения программы и закрытия экрана консоли.



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

Вы модифицировали предыдущую программу вместо создания новой с нуля, так что вам не пришлось повторять все шаги по созданию исходного файла отображения LINQ to SQL по имени Northwind.dbml (обратите внимание, что пример кода содержит отдельные проекты - каждый со своим собственным экземпляром Northwind.dbml).

Перетаскивая таблицу Orders из окна Database Explorer, вы добавили класс Order к исходному файлу Northwind. dbml для представления таблицы Orders в отображении базы данных Northwind.

0/R Designer также обнаружил отношение в базе данных между Customers и Orders и добавил член-коллекцию Orders к классу Customer для представления отношения. Все это было сделано автоматически, в процессе добавления новых элементов управления в форму.

Если вы посмотрите на то, что было до и после добавления объекта базы данных в панель 0/R Designer, то увидите определения классов для добавленных объектов в сгенерированном исходном файле Northwind, designer, cs. Как упоминалось ранее, этот сгенерированный исходный файл нельзя модифицировать - он используется только для справочных целей.

Затем вы добавили новый доступный член Orders к конструкции select запроса: select new {

ID=c.CustomerID, Name=c.CompanyName, City=c.City, State=c.Region, Orders=c.Orders

Orders - специальный типизированный набор LINQ (System. Data . Linq. EntitySet<Order>), который представляет отношение между двумя таблицами в реляционной базе данных. Он реализует интерфейс lEnumerable/IQueryable, и поэтому может использоваться в качестве источника данных LINQ сам по себе или подвергаться итерации в операторе foreach, как любая другая коллекция или массив.

Подобно объекту Table, показанному в предыдущем примере, EntitySet похож на типизированную коллекцию объектов Order (как List<Order>), но только заказы, присланные определенным заказчиком, появляются в члене EntitySet для конкретного экземпляра Customer.

Объекты Order в члене EntitySet объекта Customer соответствуют строкам заказов в базе данных, имеющих значение поля CustomerlD, равное ID этого заказчика.

Навигация по отношению просто включает построение вложенного оператора foreach для итерации по каждому заказчику, а затем по каждому его заказу:

foreach (var item in queryResults) { Console.WriteLine(

Заказчик: {0} {1}, {2}\n{3} заказов:\tID saKasaXtflaTa заказа , item.Name, item.City, item.State, item.Orders.Count

foreach (Order о in item.Orders) {

Console.WriteLine( \t\t{0}\t{l} , o.OrderlD, o.OrderDate);



Вместо того чтобы использовать форматирование ToString () по умолчанию, вы форматируете вывод для читабельности таким образом, чтобы правильно показать иерархию со списком заказов каждого заказчика. Форматная строка Заказчик: {0} {!}, {2}\п{3} 3aKa30B:\tID 3aKa3a\tflaTa заказа включает заполнители для имени, города и штата каждого заказчика в первой строке, а затем печатает заголовки столбцов для заказов данного заказчика, выводимых в последующих строках. Вы используете агрегатный метод LINQ Count () для печати количества заказов данного заказчика, затем печатаете ID заказа и данные заказа в каждой строке вложенного оператора foreach:

Заказчик: White Clover Markets Seattle, WA 14 заказов: ID заказа Дата заказа

10269 7/31/1996 12:00:00 AM

10344 11/1/1996 12:00:00 AM

Форматирование пока еще немного корявое - в том отношении, что вы видите здесь и время заказа, тогда как интересует только дата. Однако в следующем примере будет шанс это поправить.

Дальнейшее углубление в LINQ to SQL

Чтобы получить интересные данные о затратах каждого заказчика, вы должны добавить еще один уровень детализации и углубиться в подробности каждого заказа, используя таблицу Order Details. Опять-таки, LINQ to SQL и O/R Designer весьма облегчают эту задачу, в чем вы убедитесь в следующем практическом занятии.

Практическое занятие Дальнейшее углубление в LINQ to SQL

Модифицируйте в Visual С# 2008 проект предыдущего примера BegVCSharp 27 l FirstLINQtoSQLQuery в каталоге С: \BegVCSharp\Chapter27, как описано в следующих шагах.

1. Щелкните на таблице Order Details в окне Database Explorer и перетащите ее в панель Northwind.dbml, как показано на рис. 27.16.

2. Откомпилируйте проект, чтобы объект OrderDetail появился, когда вы начнете вводить код на следующем шаге.

S. Откройте главный файл Program.cs. В методе Main () запрос должен выглядеть так:

static void Main(string [ ] args) {

NorthwindDataContext northWindDataContext = new NorthwindDataContext(); var queryResults = from с in northWindDataContext.Customers

where c.Country == USA

select new {

ID=c.CustomerID, Name=c.CompanyName, City=c.City, State=c.Region, Orders=c.Orders



1 ... 280 281 282 [ 283 ] 284 285 286 ... 396

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