2009-10-27 3 views
0

La requête ci-dessous obtient tous les clients et les produits qu'ils commandent. Il existe plusieurs images par produit, de sorte que la requête renvoie des lignes en double. Je veux seulement une des images pour empêcher cette duplication. Les images ont un ordre de classement. Donc, j'ai besoin de trier les photos et de prendre celui avec le plus haut rang et de joindre cela aux produits. Comment puis-je faire ceci?LINQ - joindre la plus haute image d'un produit qui a beaucoup de photos

from c in Customers 
join o in OnlineOrders on c.CustomerID equals o.CustomerID into ords 
from co in ords.DefaultIfEmpty() 
join pro in Products on co.OnlineOrderID equals pro.OnlineOrderID into oprods 
from op in oprods.DefaultIfEmpty() 
join pict in Pictures on op.ProductID equals pict.ProductID into picpros 
from ppro in picpros.DefaultIfEmpty() 
select new { 
c.CustomerName, co.OnlineOrderTitle, 
op.ProductTitle, ppro.PictureFilename } 

Répondre

1

Je l'ai compris.

from ppro in picpros.DefaultIfEmpty().Take(1) 
0
 


var result=db.OnlineOrders.Select(p=> 
new { 
CustomerName=p.Customer.CustomerName, 
OnlineOrderTitel=p.OnlineOrderTitel, 
ProductTitel=p.Protuct.ProductTitel, 
PictuteFileName=p.Procuct.Pictures.OrderByDescending(u=>u.Rank).First()) }); 


 

Je suppose que le produit a un à plusieurs OnlineOrder relation, sinon (Namy à beaucoup), je dois connaître votre structure. Avez-vous des "doublons" dans la table OnlineOrder ou dans la table OnlineOrderProduct?