IQueryable/Linq Orderby 失败:仅对有限数量的记录进行排序

IQueryable/Linq Orderby Fail: Sorts only a limited number of records

我有一个一次处理数百条记录的应用程序,我使用以下代码对查询进行排序,但它只会对有限数量的记录进行排序和排序。

switch (sortOrder)
{
case "created":
    folders = (from f in folders orderby f.created_date ascending select f);

    //folders = folders.OrderBy(f => f.created_date.Value.Year)
    //                .ThenBy(f => f.created_date.Value.Month)
    //                .ThenBy(f => f.created_date.Value.Day);
    break;
case "created_desc":
    folders = (from f in folders orderby f.created_date descending select f);

    //folders = folders.OrderByDescending(f => f.created_date.Value.Year)
    //                    .ThenByDescending(f => f.created_date.Value.Month)
    //                    .ThenByDescending(f => f.created_date.Value.Day);
    break;
default:
    folders = folders.OrderBy(f => f.folder_number);
    break;
}

此外,当我多次尝试对其进行排序时:升序、降序然后再次升序,它不会通过第一次升序排序。如果这是有道理的。所以它对前 20 条左右的记录排序很好,但是当您继续向下滚动时,您会看到所有记录都没有正确排序。我试过 IQueryable 和 Linq,两者都产生相同的结果。

您在之前的 Linq 查询之上应用排序,因为您每次都在覆盖 folders 变量。相反,您应该将 folders 保留为未排序的数据源并单独保留已排序的结果,而不会覆盖 folders.

所以不是这个:

folders = (from f in folders ...

你应该这样做:

var sortedFolders = (from f in folders ...