Я действительно запутался в отчете, который мне нужен. На сегодняшний день большинство моих отчетов были простыми, поэтому я мог сам легко их создавать. Но, будучи новичком в sql / dlinq, я не могу найти следующий путь:
var closingStock =
(from p in session.Query<Product>()
select new
{
p.Id,
p.Name,
p.Batch,
p.Rate,
ClosingStock = p.Quantity - p.AllocatedQuantity,
p.DivisionId
}).ToList();
var distributedQuantityAfterPeriod =
(from i in session.Query<OutwardInvoiceItem>()
where i.ParentInvoice.Date > ToDate
select new
{
Id = i.Product.Id,
DistributedAfter = i.Quantity
}).ToList();
var distributedQuantityInPeriod =
(from i in session.Query<OutwardInvoiceItem>()
where i.ParentInvoice.Date >= FromDate && i.ParentInvoice.Date <= ToDate
select new
{
Id = i.Product.Id,
Distributed = i.Quantity
}).ToList();
var receivedQuantityAfterPeriod =
(from i in session.Query<InwardInvoiceItem>()
where i.ParentInvoice.Date > ToDate
select new
{
Id = i.Product.Id,
ReceivedAfter = i.Quantity
}).ToList();
var receivedQuantityInPeriod =
(from i in session.Query<InwardInvoiceItem>()
where i.ParentInvoice.Date >= FromDate && i.ParentInvoice.Date <= ToDate
select new
{
Id = i.Product.Id,
Received = i.Quantity
}).ToList();
Как видите, я пытаюсь создать отчет о движении инвентаря за конкретную дату. У меня есть следующие проблемы:
1. Как я могу уменьшить пять запросов? Возможно ли это?
2. Как можно объединить данные, предоставленные этими запросами, в одну таблицу, которая сгруппирована по идентификатору продукта и суммирована по столбцам, связанным с количеством? На данный момент я использую петли, которые очень медленные.
Что я использую:
C # 4, nHibernate, Sqlite
Любая помощь будет очень высоко оценена.
С уважением,
Yogesh.