首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

row_number 在linq中怎么写

2013-07-16 
row_number 在linq中如何写 SELECT *FROM(SELECT ROW_NUMBER() OVER(PARTITION BY cid ORDER BY price DES

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

热点排行