开发者

I have some problems with LINQ expression, OrderBy(), Skip(), Take() works incorrect

I have LINQ expression like

var a = ctx.EntitySet
        .OrderByDescending(t => t.Property)
        .Skip(pageIndex * size) 
        .Take(size);

OrderBy() sh开发者_JAVA百科ould call before Skip() and Take(), but sorting happens at the end. Can I solve this problem?

Sorry, many people didn't understand my question. Query runs without any errors, but I want

//It is I want
1) Sorting ALL data
2) Use Skip() and Take()

What I have in result if I do like at my example: 1) Skip() 2) Take() 3) Sorting only taked elements!


i don't know why , but somehow it works for me , hope it helps you

var a1 = from p in ctx.EntitySet
        .OrderByDescending(t => t.Property)
        select p;

var a2 = from p in a1
        .Skip(pageIndex * size) 
        .Take(size)
        select p;


have you tried this

if you go for below solution it will first get the records and than does sorting on that records which may lead you to wrong result.

var a = ctx.EntitySet
        .Skip(pageIndex * size) 
        .Take(size);

a = a.OrderByDescending(t => t.Property);

or

Following way you first doing sorting and than getting records after that, so by this way you can get the result you want , this is proper way to do

   var a = ctx.EntitySet
    .OrderByDescending(t => t.Property)
    .Skip(pageIndex * size) 
    .Take(size);

But it always depends on your requirement what you want....


command orders in this sample is not Important. it will sort your data first and after that your data will be collected.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜