读书人

row_number 在linq中怎么写

发布时间: 2013-07-16 22:38:05 作者: rapoo

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 的语句靠谱,学习了!

读书人网 >.NET

热点推荐