Linq to sql 如何在LINQ中执行此查询
下午, 我想知道我将如何在LINQ中执行此查询,请任何人提供帮助Linq to sql 如何在LINQ中执行此查询,linq-to-sql,Linq To Sql,下午, 我想知道我将如何在LINQ中执行此查询,请任何人提供帮助 SELECT Id, ExportDate, (SELECT TOP (1) Id FROM Orders WHERE (PickupListId = PickingLists.Id)) AS StartOrderId, (SELECT TOP (1) Id FROM
SELECT Id, ExportDate,
(SELECT TOP (1) Id
FROM Orders
WHERE (PickupListId = PickingLists.Id)) AS StartOrderId,
(SELECT TOP (1) Id
FROM Orders AS Orders_1
WHERE (PickupListId = PickingLists.Id)
ORDER BY Id DESC) AS EndOrderId,
(SELECT COUNT(Id) AS Expr1
FROM Orders AS Orders_2
WHERE (PickupListId = PickingLists.Id)) AS NumberOfOrders
FROM PickingLists
ORDER BY ExportDate DESC
更新
我已经按照Andrei的解决方案更新了我的代码,但是在转换ID时出现了一个问题。你能看到它可能是什么吗
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<GetPickingLists> GetPickingLists()
{
using (aboDataDataContext dc = new aboDataDataContext())
{
var query = from list in dc.pickingLists
orderby list.ExportDate descending
select new GetPickingLists
{
plId = list.Id,
plDate = list.ExportDate,
orderStart = Convert.ToInt32(dc.amzOrders.Where(order => order.pickupListId == list.Id).FirstOrDefault()),
orderEnd = Convert.ToInt32(dc.amzOrders.Where(order => order.pickupListId == list.Id).OrderByDescending(order => order.id).FirstOrDefault()),
orderCount = dc.amzOrders.Where(order => order.pickupListId == list.Id).Count(),
};
return query.ToList();
}
}
试着这样做:
var query = db.PickingLists
.OrderByDescending(pl => pl.ExportDate)
.Select(pl => new GetPickingLists {
plId = pl.Id,
plDate = pl.ExportDate,
orderStart = db.Orders.FirstOrDefault(o => o.PickupListId = pl.Id).Id,
orderEnd = db.Orders.LastOrDefault(o => o.PickupListId = pl.Id).Id,
orderCount= db.Orders.Count(o => o.PickupListId = pl.Id)
});
您好,请查看我的更新代码。。。我在返回开始和结束时遇到问题ID@thatuxguy,很抱歉,完全忘记退回订单
Id
。请查看更新的代码。我想。。。让我测试一下,它不允许我返回它无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”
我编辑查询以返回您的模型。。。现在应该可以了。
var query = db.PickingLists
.OrderByDescending(pl => pl.ExportDate)
.Select(pl => new GetPickingLists {
plId = pl.Id,
plDate = pl.ExportDate,
orderStart = db.Orders.FirstOrDefault(o => o.PickupListId = pl.Id).Id,
orderEnd = db.Orders.LastOrDefault(o => o.PickupListId = pl.Id).Id,
orderCount= db.Orders.Count(o => o.PickupListId = pl.Id)
});
var query = from list in dbContext.PickingLists
orderby list.ExportDate descending
select new
{
list.Id,
list.ExportDate,
StartOrderId = dbContext.Orders.Where(order => order.PickupListId == list.Id).FirstOrDefault().Id,
EndOrderId = dbContext.Orders.Where(order => order.PickupListId == list.Id).OrderByDescending(order => order.Id).FirstOrDefault().Id,
NumberOfOrders = dbContext.Orders.Where(order => order.PickupListId == list.Id).Count(),
}