J'ai 2 tables, OrderDetails et Requests Dans mon fichier dbml LINQ to SQL. OrderDetailsID est une clé étrangère dans la table Requests.Sélectionner une requête dans LINQ basé sur Foreign Table
Je veux écrire la requête pour obtenir la somme de UnitCost de OrderDetails basé sur OrderId. Et s'il y a une ligne dans la table des demandes pour chaque OrderDetailsID, et le Requests.Last.RequestType = "Remboursement" Je veux réduire le montant total du remboursement de la somme principale Sinon, s'il n'y a pas de ligne basée sur OrderDetailsID, ajouter à la somme .
Voici comment je l'implémente. Je cherche à éviter d'utiliser "Pour chaque".
Des solutions?
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
Je suis impatient de découvrir S'il existe une solution pour fusionner la requête select et ForEach et obtenir le résultat en utilisant une requête LINQ. Mais merci pour votre réponse. C'était utile. – arlen
Que voulez-vous dire par fusionner? Vous pouvez chaîner les deux instructions et ainsi ignorer la déclaration objOrderDetails, mais vous ne pouvez pas supprimer ToList() car ForEach() n'est pas disponible sur IQueryable ou même IEnumerable. – Antony