2015-10-14 91 views
0

我有一个应用程序每次处理数百条记录,并且我使用以下代码来排序查询,但它只排序和排序有限数量的记录。IQueryable/Linq Orderby失败:仅排序有限数量的记录

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,两者都产生相同的结果。

Sort by Create Date img1

Sort by Create Date img2

回答

1

你申请你的排序上一LINQ查询顶部,因为你是你的folders变量每次覆盖。相反,您应该将folders作为未排序的数据源并分别保留排序结果,而不会覆盖folders

因此,不是这样的:

folders = (from f in folders ... 

你应该这样做:

var sortedFolders = (from f in folders ... 
+0

绝对精彩!在过去的几周里,这一直让我感到非常紧张。谢谢!! –