2010-02-24 4 views
1

У меня есть следующий код:LINQ запрос - Одд Результат - OrderBy

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

AH! Я мог бы поклясться, что попробовал эту комбинацию ... Ну, это сработало! Спасибо, что открыли мне глаза. +1 - Принято. – CodeLikeBeaker

Смежные вопросы