2010-02-24 90 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