2
我有这样一段简单的SQL不正是我需要的...的Sql转换到LINQ - 左加入,集团,Min和点心
SELECT MIN(pb.Id) AS Id, MIN(pb.Quantity) AS Requested, SUM(pbi.Quantity) AS Total
FROM PickBatchItems AS pb
LEFT JOIN PickBatchItemLocations AS pbi ON pb.Id = pbi.PickBatchItemId
GROUP BY pb.Id
结果...
Id, Requested, Total
1 100 NULL
2 200 165
3 200 NULL
这正是我想要的,但我需要这个在Linq。
到目前为止,我有...
var pick = (from pb in db.PickItems
join pbi in db.PickItemLocations on pb.Id equals pbi.PickBatchItemId into TempJoin
from resList in TempJoin.DefaultIfEmpty()
where pb.Id == iPickItemId
group resList by pb.Id into g
select new
{
Id = g.Key,
RequestedQuantity = g.Min(???????????????????????),
SentQuantity = g.Sum(a => a.Quantity == null ? 0 : a.Quantity),
}).FirstOrDefault();
我怎样才能得到RequestedQuantity?
UPDATE:
由于 '大卫B' 我找到了答案:
var pick = (from pb in db.PickBatchItems
join pbi in db.PickBatchItemLocations on pb.Id equals pbi.PickBatchItemId into TempJoin
from resList in TempJoin.DefaultIfEmpty()
where pb.Id == iPickItemId
group new { PickItem = pb, PickItemLocation = resList } by pb.Id into g
select new
{
Id = g.Key,
RequestedQuantity = g.Min(a => a.PickItem.Quantity),
SentQuantity = g.Sum(a => a.PickItemLocation.Quantity == null ? 0 : a.PickItemLocation.Quantity),
}).FirstOrDefault();
此连接并返回我的两个表,即使PickBatchItemLocations表是空的。
如果他/她是在分组'pb.Id'它不能是主键。我认为你的第二个例子可能更准确。 – Joe 2012-03-07 17:09:56
尽管SQL中的“MIN(pb.Id)AS Id”根本没有任何意义,所以谁知道。有一个upvote。 – Joe 2012-03-07 17:12:06
@JoeTuskan这个连接引入了id的重复。 – 2012-03-07 17:14:36