我对LINQ表达式、OrderBy()、Skip()、Take()有一些问题,它们的工作方式不正确
我有LINQ的表情我对LINQ表达式、OrderBy()、Skip()、Take()有一些问题,它们的工作方式不正确,linq,sql-order-by,skip,take,Linq,Sql Order By,Skip,Take,我有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
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) 拿()
3) 仅对已获取的元素进行排序 你试过这个吗
如果您选择下面的解决方案,它将首先获取记录,然后对这些记录进行排序,这可能会导致错误的结果
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);
但这始终取决于您的需求您想要什么….此示例中的命令顺序并不重要。它将首先对您的数据进行排序,然后再收集您的数据。我不知道为什么,但不知为什么它对我有效,希望它能帮助您
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;
这是正确的方法,实际的问题是什么?因为查询看起来很好,您可以传递生成的sql查询,因为它在编写时看起来很好。如果你得到了想要的信息,别忘了将答案标记为已接受。代码示例对我很有用,它先订购了一套,然后跳过了金额,然后取了正确的金额。