2010-02-24 105 views
1

我有以下代码:LINQ查询 - 奇结果 - 排序依据

int pageNumber = 0; 
int pageCount = 10; 
int numberOfRecords = 10; 

    var query = V_ers_notice.Skip(pageNumber * pageCount).Take(numberOfRecords); 

return query.OrderByDescending(id => id.DOC_DATE).Select(ERSNoticeMap.DataToObject).ToList()); 

的ERSNoticeMap代码如下:

public class ERSNoticeMap 
{ 
     public static readonly Func<V_ers_notice, OGeneralFile> DataToObject = mapper => 
              new OGeneralFile 
              { 
               Docket = mapper.DOCKET, 
               DocumentDate = mapper.DOC_DATE, 
               FiledDate = mapper.FILED_DATE, 
               FileGuid = mapper.FGUID, 
               FileName = mapper.FName, 
               FilePath = mapper.FPathName, 
               FileSize = mapper.FSize, 
               FileType = mapper.FType, 
               Issuance = mapper.ISSUANCE, 
               Title = mapper.TITLE, 
               FileId = mapper.FID, 
              }; 
} 

而且我OGeneralFile如下(即使它没有任何关系这个问题):

public class OGeneralFile 
    { 
     public int FileId { get; set; } 
     public Guid FileGuid { get; set; } 
     public string FilePath { get; set; } 
     public string FileName { get; set; } 
     public string FileType { get; set; } 
     public string FileSize { get; set; } 
     public string Issuance { get; set; } 
     public DateTime? DocumentDate { get; set; } 
     public DateTime? FiledDate { get; set; } 
     public string Docket { get; set; } 
     public string Title { get; set; } 
     public string Type { get; set; } 
    } 

现在,这里是奇怪的部分。当我运行这个并查看SQL分析器时,它没有正确地排序我的查询。我得到以下内容:

SELECT [t1].[fID] AS [FID], [t1].[fGUID] AS [FGUID], [t1].[fPathName] AS [FPathName], [t1].[fName] AS [FName], [t1].[fType] AS [FType], [t1].[fSize] AS [FSize], [t1].[ISSUANCE], [t1].[DOC_DATE], [t1].[FILED_DATE], [t1].[DOCKET], [t1].[TITLE] 
FROM (
    SELECT TOP (10) [t0].[fID], [t0].[fGUID], [t0].[fPathName], [t0].[fName], [t0].[fType], [t0].[fSize], [t0].[ISSUANCE], [t0].[DOC_DATE], [t0].[FILED_DATE], [t0].[DOCKET], [t0].[TITLE] 
    FROM [v_ers_notice] AS [t0] 
    ) AS [t1] 
ORDER BY [t1].[DOC_DATE] DESC 

当选择不在外面的前10位时,顺序应该位于内部查询中。

任何想法为什么这可能发生?

谢谢,

回答

7

我认为你的查询是错误的。你需要OrderBy之前,你跳过,而不是之后:

var query = V_ers_notice.OrderByDescending(id => id.DOC_DATE) 
         .Skip(pageNumber * pageCount) 
         .Take(numberOfRecords); 
+0

啊!我可以发誓我尝试了这种组合....嗯,它的工作!谢谢你打开我的眼睛。 +1 - 接受。 – CodeLikeBeaker 2010-02-24 22:27:41