row_number 在linq中如何写
SELECT *
FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY cid ORDER BY price DESC) as rid,*
FROM table
) AS T
WHERE rid<=3
请把上面的sql语句写成 linq 如何写?
谢谢
[解决办法]
try
var ary = from t in dc.Class1 group t by t.cid into g select new { key = g.Key, source = g.OrderByDescending(tt => tt.price).Take(3) };
[解决办法]
var query= db.TableA.OrderByDescending(x=>x.price)
.Select((x,index)=>new{rid=index+1,x})
.Where(s=>s.rid<=3);
[解决办法]
int index = 0;
List<table3> result = db.table3.OrderByDescending(c => c.out_money).ToList();
var query = from u in result
group u by u.bill_no into temp
from n in temp
orderby n.bill_no
select new
{
RowNo=index++,
n.Num,
n.bill_no,
n.out_money
};
foreach (var item in query)
{
Console.WriteLine(item.RowNo+ " "+ item.Num + " " + item.bill_no + " " + item.out_money);
}
[解决办法]
首先,你可以用Take和Skip分页,没必要用rownumber。
你可以这么写
int n = 0;
var query = from x in data
let number = ++n
select new { x, number };
[解决办法]
楼主的语句是按分区排名取每个分区的前3条, 如果有10个分区,最后数据可能是30条呢
[解决办法]
经测试 hjywyj 的语句靠谱,学习了!