Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我对LINQ表达式、OrderBy()、Skip()、Take()有一些问题,它们的工作方式不正确_Linq_Sql Order By_Skip_Take - Fatal编程技术网

我对LINQ表达式、OrderBy()、Skip()、Take()有一些问题,它们的工作方式不正确

我对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

我有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) 拿() 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查询,因为它在编写时看起来很好。如果你得到了想要的信息,别忘了将答案标记为已接受。代码示例对我很有用,它先订购了一套,然后跳过了金额,然后取了正确的金额。