5

我有 LINQ 表达式

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

OrderBy() 应该在 Skip() 和 Take() 之前调用,但排序发生在最后。我能解决这个问题吗?

对不起,很多人没有理解我的问题。查询运行没有任何错误,但我想要

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

如果我喜欢我的例子,我得到的结果是:1)Skip()2)Take()3)只对采用的元素进行排序!

4

3 回答 3

2

我不知道为什么,但不知何故它对我有用,希望它对你有帮助

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;
于 2014-08-19T08:24:00.657 回答
0

此示例中的命令命令并不重要。它会先对您的数据进行排序,然后再收集您的数据。

于 2013-06-16T10:59:25.277 回答
0

你试过这个吗

如果您采用以下解决方案,它将首先获取记录,然后对可能导致错误结果的记录进行排序。

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

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

或者

按照您首先进行排序然后获取记录的方式,因此通过这种方式您可以获得您想要的结果,这是正确的方法

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

但它总是取决于你的要求你想要什么......

于 2011-09-19T07:49:45.087 回答