tags:

views:

38

answers:

1

Hello,

I have the following code:

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());

The ERSNoticeMap code is as follows:

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,
                                          };
}

And my OGeneralFile is as follows (even though it has nothing to do with this problem):

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; }
    }

Now, here is the strange part. When I run this and look at SQL profiler, it is not ordering my query properly. I get the following:

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

The order by should be in the inner query when selecting the top 10 not on the outside.

Any thoughts to why this may be happening?

Thanks,

+5  A: 

I think your query is wrong. You need to OrderBy before you do skip and take, not after:

var query = V_ers_notice.OrderByDescending(id => id.DOC_DATE)
                        .Skip(pageNumber * pageCount)
                        .Take(numberOfRecords );
Mark Byers
AH! I could have sworn I tried this combination.... Well, it worked!! Thanks for opening my eyes. +1 - Accepted.
Jason Heine