sqlLinq取较高的RN数
这是我的问题sqlLinq取较高的RN数,sql,linq,entity-framework,Sql,Linq,Entity Framework,这是我的问题 var sonuc = (from c in cd.Product join pp in cd.Product_Picture_Mapping on c.ID equals pp.ProductID join pcc in cd.Picture on pp.PictureID
var sonuc = (from c in cd.Product
join pp in cd.Product_Picture_Mapping
on c.ID equals pp.ProductID
join pcc in cd.Picture
on pp.PictureID equals pcc.ID
select new ProductViewModel() { PicturePath = pcc.Path, ProductID = c.ID }).OrderBy(x => x.ProductID).ToList().AsEnumerable().Select((entry, index) => new ProductViewModel()
{
PicturePath = entry.PicturePath,
ProductID = entry.ProductID
}).OrderBy(x => x.ProductID).GroupBy(x => x.ProductID).Select(g => new { g, count = g.Count() })
.SelectMany(t => t.g.Select(b => b).Zip(Enumerable.Range(1, t.count), (j, i) => new { j.ProductID, j.PicturePath, rn = i }));
产量
PicturePath ProductID RN
samplepath1 4 1
samplepath2 5 1
samplepath3 10 1
samplepath4 10 2
samplepath5 10 3
所以,我想用较高的RN取一行具有相同的产品id,如下所示
PicturePath ProductID RN
samplepath1 4 1
samplepath2 5 1
samplepath5 10 3
我怎么会这样?
感谢您按ProductID分组,并从每组中选择最大RN的项目:
var result = from x in sonuc
group x by x.ProductID into g
select g.OrderByDescending(x => x.RN).First();
谢谢,我只想问一个问题,如何将此结果添加到ProductViewModel中?我的意思是选择new ProductViewModel()@DursunICCAN您可以将此匿名类型投影到ProductViewModel-它具有ProductID和PicturePathSide注释的属性-而不是
t.g.select(b=>b).Zip(Enumerable.Range(1,t.count),(j,i)=>new{j.ProductID,j.PicturePath,rn=i})
您可以使用重载选择运算符t.g.Select((j,rn)=>new{j.ProductID,j.PicturePath,rn})