Как я могу запросить диапазон дат, какой продукт не был заказан? (LINQ) - PullRequest
1 голос
/ 20 апреля 2009

У меня три таблицы,

  • Продукты (ProductID, ProductName)
  • Заказы (OrderID, OrderDate)
  • OrderDetails (ProductID, OrderID) Таблица соединений между продуктами и заказами.

Например, есть Три ProductID в таблице продуктов A01, A02, A03

Четыре идентификатора заказа в таблице заказов 1. 01.01.2009, 2. 03.01.2009, 3. 01.01.2009, 4. 07.01.2009.

OrderDetails данные как показано ниже:

A01 - 01/01/2009

A02 - 01/01/2009

A01 - 03/01/2009

A02 - 01.01.2009

A01 - 01.05.2009

A03 - 01.05.2009

A01 - 01/01/2009

тогда я хочу отобразить дату, когда A03 не был упорядочен в диапазоне от 01.02.2009 до 01.01.2009, что может привести к такому результату.

DateMissingOrder для продукта A03 в диапазоне дат с 01.01.2009 по 08.01.2009:

03/01/2009

07/01/2009

Как я могу сделать это в LINQ to SQL Visual Basic? Может кто-нибудь помочь мне с подсказкой, пожалуйста .. Спасибо заранее.

1 Ответ

1 голос
/ 20 апреля 2009

Попробуйте что-то вроде этого:

Выберите все даты в диапазоне

Dim DatesInRange = (From o in dc.Orders _
                   Where (o.OrderDate >= StartDate and _
                          o.OrderDate <= EndDate)
                   Select o.OrderDate).Distinct

Выберите все даты в диапазоне для заказов A03

Dim Dates = (From o in dc.OrdersDetails _
            Where (o.Order.OrderDate >= StartDate and _
                   o.Order.OrderDate <= EndDate) and _
                   o.Order.Product.ProductName = "A03" _
            Select o.Order.OrderDate).Distinct

Возвращает даты, отсутствующие во втором списке

Dim MissingDates = DatesInRange.Except(Dates)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...