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