【发布时间】:2011-03-02 00:28:58
【问题描述】:
我的 LINQ to SQL dbml 文件中有 2 个表、OrderDetails 和 Requests。 OrderDetailsID 是 Requests Table 中的外键。
我想编写查询以根据 OrderId 从 OrderDetails 中获取 UnitCost 的总和。 如果每个 OrderDetailsID 在请求表中有一行,并且 Requests.Last.RequestType="Refund" 我想从主要金额中减少总退款金额,否则如果没有基于 OrderDetailsID 的行,则添加到总和。
这是我实现它的方式。 我希望避免使用“For each”。
有什么解决办法吗?
iRefund = (From od1 In dc.OrderDetails _
Where od1.OrderID =1 _
Select od1.UnitCost).Sum
Dim objOrderDetails = (From od1 In dc.OrderDetails _
Where od1.OrderID =1 _
Select od1)
For Each OrderDetail As ORM.Entities.OrderDetail In objOrderDetails
If Not OrderDetail.Requests Is Nothing Then
IF OrderDetail.Requests.Last.RequestType="Refund" Then
iRefund -= OrderDetail.UnitCost
End If
End If
Next
【问题讨论】: