Вот что я пытаюсь сделать:
У меня есть три таблицы, манифест, реквизиты и биллинг. Журнал
для каждого манифеста есть детали, и это может быть запись в billingJournal или нет, если она есть и имеет поле recordType = 1, то billingJournal.amount - это сумма для выставления счета, и она мне также нужна в моей сетке.
В настоящее время я делаю два этапа:
Используя обычное объединение, чтобы собрать манифест и его детали, я возвращаю простое представление таблицы данных с прикрепленным кодом, основанным на выбранном пользователем диапазоне дат.
Затем я могу пройтись по сетке данных с помощью цикла. Я установил цикл для проверки каждой строки таблицы данных, прочитал номер манифеста и затем выполнил поиск linq в таблице billingJournal. Если есть совпадение, он считывает данные из таблицы billingJournal, получает значение и сохраняет его в текущей строке сетки данных. IE после просмотра каждого манифеста в billingJournal, если есть соответствующий манифест с типом записи 1 (сумма счета), тогда я могу сделать простую замену, например:
BillingReportDataGrid ("amount", 1) .Value = queryResult
Что я хотел бы знать, есть ли способ сделать все это в моем основном запросе linq? Или есть просто лучший способ сделать это, чем то, как я это делаю?
Я использую класс reportData, чтобы получить доступ к столбцам по имени.
Я пытался поиграть с левыми соединениями, но, похоже, не совсем понял.
Спасибо -
- Джо
Dim query = From detail In db.details _
Where detail.InboundDate >= CType(MonthCalendar1.SelectionStart, DateTime) _
And detail.InboundDate <= CType(MonthCalendar1.SelectionEnd, DateTime).AddHours(23).AddMinutes(59) _
Join mainfest In db.Manifests On mainfest.ManifestID Equals detail.MainID _
Select New reportData With {.Amount = Nothing, .ManifestID = mainfest.ManifestID, .InboundDate = detail.InboundDate}