Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql 如何在LINQ中执行此查询_Linq To Sql - Fatal编程技术网

Linq to sql 如何在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

下午,

我想知道我将如何在LINQ中执行此查询,请任何人提供帮助

 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(),
            }