0

Пожалуйста, помогите мне, чтобы преобразовать этот запрос SQL в LINQ-EnititesSQL в Linq-Сущностей

select e.RowMeterialName,f.RowUnitName,*,isnull((b.Quantity - (Select SUM(a.Quantity) from PurchaseDetail a 
        join PurchaseMaster c on a.PurchaseId=c.PurchaseId 
        where a.RawMetId=b.RawMetrialId and c.PurchaseOrderId=b.PurchaseOrderId)),b.Quantity) as Remain 
        from PurchaseOrderDetail b 
        join RawMeterialMaster e on b.RawMetrialId=e.RawMetId 
        join RawUnitMaster f on e.RawUnitId=f.RowUnitId 
        where [email protected] 

Пожалуйста, помогите мне.

+0

Пожалуйста, не просто падение SQL и попросить преобразования. По крайней мере, покажите модель класса, поэтому видны свойства навигации и множество ассоциаций. –

+0

SO попросил 10 точек репо, прежде чем вставлять изображение. –

ответ

0

Спасибо всем, но я нашел результат с этим запросом

from b in db.PurchaseOrderDetails 
         select new 
         { 
          b.RawMeterialMaster.RowMeterialName, 
          PurOrderDetailId = b.PurOrderDetailId, 
          PurchaseOrderId = b.PurchaseOrderId, 
          RawMetrialId = b.RawMetrialId, 
          DueOn = b.DueOn, 
          Quantity = b.Quantity, 
          ItemRate = b.ItemRate, 
          MetrialUnitsId = b.MetrialUnitsId, 
          Remark = b.Remark, 
          RowUnitName = b.RawMeterialMaster.RawUnitMaster.RowUnitName, 
          ReOrderQuantity = (decimal?)b.RawMeterialMaster.ReOrderQuantity, 
          Remain = ((System.Decimal?)b.Quantity - 
           (from a in db.PurchaseDetails 
           where 
           a.RawMetId == b.RawMetrialId && 
           a.PurchaseMaster.PurchaseOrderId == b.PurchaseOrderId 
           select new 
           { 
            a.Quantity 
           }).Sum(p => p.Quantity) ?? (System.Decimal?)b.Quantity) 
         }; 
+0

Кто-нибудь хочет конвертировать SQL в LinQ, используя сторонний инструмент [Linqer] (http://www.sqltolinq.com) и [LinqPad] (http://www.linqpad.net/). Это очень полезно. Благодаря Счастливому Чену. –

0

Это длинный выстрел, но вы можете попробовать это:

PurchaseDetail 
.Join 
(
    PurchaseMaster, 
    x=>x.PurchaseId, 
    x=>x.PurchaseId, 
    (detail,master)=>new {detail,master} 
) 
.Join 
(
    PurchaseOrderMaster, 
    x=>x.PurchaseOrderId, 
    x=>x.PurchaseOrderId, 
    (joined,ordermaster)=>new{detail=joined.detail,master=joined.master,ordermaster} 
) 
.Select 
(
    x=> 
    new{detail.Quantity,detail.RawMetId} 
) 
.GroupBy(x=>x.RawMetId) 
.Select 
(
    x=> 
    new 
    { 
     RawMetId=x.Key, 
     Quantity=x.Sum(z=>z.Quantity) 
    } 
) 
.Join 
(
    PurchaseOrderDetail, 
    x=>x.RawMetrialId, 
    x=>x.RawMetId, 
    (subquery,orderdetail)=>new{subquery,Remain=subquery.Quantity - orderdetail.Quantity} 
) 
+0

Спасибо jyparask, но это не работает. –

+0

Привет, Можете ли вы дать более подробную информацию о том, что пошло не так? –

Смежные вопросы