我有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)跳过() 2)Take() 3)仅排序元素!
答案 0 :(得分: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;
答案 1 :(得分: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);
但它总是取决于你的要求你想要什么......
答案 2 :(得分:0)
命令顺序并不重要。它将首先对您的数据进行排序,之后将收集您的数据。