我正在尝试将以下SQL语句转换为linq查询但由于某种原因我无法使其工作!!
SELECT o.ITEMID, COUNT(o.ITEMID) AS COUNT, MAX(i.QUANTITY) AS Quantity
FROM ORDERS AS o LEFT OUTER JOIN
INVENTORY AS i ON o.ITEMID = i.ITEMID
GROUP BY o.ITEMID
我找到了this link,有人有类似的问题,但我似乎无法将其应用于我需要的东西。
感谢您的帮助。
这是我到目前为止的代码
Dim castleavailability = _
From o In orders _
From i In inventorys _
Where (x >= o.ITEMID = i.ITEMID)
Group New With {o, i} By o.ITEMID Into oi()
Select New With {.ItemId = oi.Key, .Count = oi.Select(y >= y.o.ItemId).Count(), .Quantity = oi.Select(y >= y.i.Quantity).Max()}
我现在得到的错误是“在这种情况下无法访问方法'oi'的定义。”指的是“新组合”。有关如何解决此问题的任何想法
非常感谢
答案 0 :(得分:4)
这应该对你有用
var query = from o in context.Orders
from i in context.Inventory
.Where(x = > o.ItemId = x.ItemId)
.DefaultIfEmpty()
group new { o, i } by o.ItemId into oi
select new
{
ItemId = oi.Key,
Count = oi.Select(y => y.o.ItemId).Count(),
Quantity = oi.Select(y => y.i.Quantity).Max(),
};
答案 1 :(得分:0)