我如何在Linq中执行此SQL?

时间:2012-08-07 16:27:04

标签: sql linq-to-sql

 SELECT   Sum(dbo.amzOrdersItem.price) as SubTotal, 
          Sum(dbo.amzOrdersItem.shippingPrice) as ShippingTotal, 
          Sum(dbo.amzOrdersItem.price) + Sum(dbo.amzOrdersItem.shippingPrice) as OrderTotal
 FROM     dbo.amzOrders INNER JOIN
          dbo.amzOrdersItem ON dbo.amzOrders.amzOrderId = dbo.amzOrdersItem.amzOrderId
 WHERE    dbo.amzOrders.id = '14818'
 GROUP BY dbo.amzOrders.id

2 个答案:

答案 0 :(得分:0)

查询如下所示:

var query =
    from order in db.amzOrders
    join item in db.amzOrdersItems on order.amzOrderId equals item.amzOrderId
    where order.Id == 14818
    group item by order.Id into g
    select new
    {
        SubTotal = g.Sum(i => i.Price),
        ShippingTotal = g.Sum(i => i.ShippingPrice),
        OrderTotal = g.Sum(i => i.Price) + g.Sum(i => i.ShippingPrice),
    };

我不确定L2SQL查询提供程序是否能够正确翻译OrderTotal行,希望它足够简单。

答案 1 :(得分:0)

也许这(但未经测试):

var result = from order in Context.amzOrders
             where order.id == '14818'

             from orderItems in Context.amzOrdersItem
               on order.amzOrderId equals orderItems.amzOrderId
             into orderItemsJoinData

             let subTotal = orderItemsJoinData.Sum( item => item.price )

             let shippingTotal = orderItemsJoinData.Sum( item => item.shippingPrice )

             select new 
             {
                 SubTotal = subTotal ,
                 ShippingTotal = shippingTotal,
                 OrderTotal = subTotal + shippingTotal
             };