я пытаюсь сделать это на LINQ:LINQ с несколькими столбцами и операций
select p.ProductID, p.ArticleCode, SUM((case h.OperationType when 0 then 1 else -1 end) * h.[Count])
from Products p
inner join StockItems s on p.ArticleCode = s.ArticleCode
inner join StockHistorical h on s.ArticleID = h.ArticleID
where h.[Date] < '23/08/2013 11:30:00'
group by p.ProductID, p.ArticleCode
У меня есть это:
var products = (from p in e.Products
join s in e.StockItems on p.ArticleCode equals s.ArticleCode
join h in e.StockHistoricals on s.ArticleID equals h.ArticleID
where h.Date < DateTime.Parse("23/08/2013 11:30:00")
group p by p.ProductID into StockResult
select new { });
Каждый знает, как я могу сделать
SUM((case h.OperationType when 0 then 1 else -1 end) * h.[Count])
с LINQ?
Спасибо!
Я забыл сказать, что проблема заключается в «группе», потому что я не могу получить доступ к свойству OperationType в группе StockResult.
Решенный! Ключ:
let combined = new
{
Product = p,
HistoryCount = (h.OperationType == 0 ? 1 : -1) * h.Count
}
Вы можете принять результат, а затем применить все изменения в нем, например, при использовании foreach для результата. –