以下查询获取所有客户及其订购的产品。每个产品有多个图片,因此查询返回重复的行。我只想要其中一张图片来防止这种重复。图片有排名顺序。因此,我需要对图片进行排序并选择排名最高的图片并将其加入到产品中。我怎么能这样做?
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 }
答案 0 :(得分:1)
我明白了。
from ppro in picpros.DefaultIfEmpty().Take(1)
答案 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()) });
我猜产品有一对多的OnlineOrder关系,如果不是(namy to many)我必须知道你的结构。您是否在OnlineOrder表或OnlineOrderProduct表中有“重复”?