Csharp/C#教程:在C#LINQ中实现RANK OVER SQL子句分享


在C#LINQ中实现RANK OVER SQL子句

我需要实现以下T-SQL子句….

RANK() OVER (PARTITION BY a.CategoryKey ORDER BY (x.Rate * @BASE_RATE ) DESC )as Rank 

…在C#LINQ中。 到目前为止,我想出的是……

 var rank = data.GroupBy(d => d.CategoryKey) .Select(group => group.OrderByDescending(g => g.Rate * @BAES_RATE) 

这会给我按照率* BASE_RATE排序的每个等级分区。 但我真正需要的是单行的单个等级 ,这是更大结果中的子查询。 所以我正在使用的完整SQL查询就像….

 SELECT a.Rate, a.CategoryKey, a.ID, . . . RANK() OVER (PARTITION BY a.CategoryKey ORDER BY (x.Rate * @BASE_RATE ) DESC )as Rank FROM data 

如果您不需要精确的Rank语义(即绑定等级)。 您可以使用可用的索引和选择投影

 var rank = data.GroupBy(d => d.CategoryKey) .SelectMany(g => g.OrderByDescending(y => y.Rate * @BAES_RATE) .Select((x,i) => new{g.Key, Item=x, Rank=i+1})) 

否则你可以看看这个答案

上述就是C#学习教程:在C#LINQ中实现RANK OVER SQL子句分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/960119.html

(0)
上一篇 2021年11月24日
下一篇 2021年11月24日

精彩推荐