Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlLinq取较高的RN数_Sql_Linq_Entity Framework - Fatal编程技术网

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})