You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi Mark, looks like their is a bug with order by descending when paging.
e.g.
var list = db.AuctionOnlineLots
.FindAllBySaleId(query.SaleId);
ApplySort();
ApplySkip();
ApplyTake();
...
private void ApplySkip()
{
if (query.Skip > 0)
{
list = list.Skip(query.Skip);
}
}
private void ApplyTake()
{
list = list.Take(query.Take);
}
private void ApplySort()
{
if (string.IsNullOrWhiteSpace(query.Sort)) return;
if (query.SortDirection == SortDirection.Asc)
list = list.OrderBy(db[tableName][query.Sort]);
if (query.SortDirection == SortDirection.Desc)
list = list.OrderByDescending(db[tableName][query.Sort]);
}
The query it generates is something along the lines of
WITH __Data AS (
SELECT [dbo].[auction_online_lots].[id], ROW_NUMBER()
OVER(ORDER BY [dbo].[auction_online_lots].[sortno] DESC) AS [_#_]
from [dbo].[auction_online_lots]
WHERE [dbo].[auction_online_lots].[saleid] = 2847)
SELECT
<COLS>
FROM __Data JOIN [dbo].[auction_online_lots] ON [dbo].[auction_online_lots].[id] = __Data.[id]
WHERE [dbo].[auction_online_lots].[saleid] = 2847 AND [_#_] BETWEEN 3 AND 5
which is wrong as its missing the order by on the second select
I should expect this
1394
1393
1392
but get
1392
1393
1394
If skip is 0 then the correct sql is generated as its slightly different SQL to when skip is a positive number
The bit its missing on the second select query is
ORDER BY [dbo].[auction_online_lots].[sortno] DESC
The text was updated successfully, but these errors were encountered:
rippo
changed the title
Order by Descending whilst paging
Order by descending whilst paging and skip
Sep 21, 2015
Hi Mark, looks like their is a bug with order by descending when paging.
e.g.
The query it generates is something along the lines of
which is wrong as its missing the order by on the second select
I should expect this
1394
1393
1392
but get
1392
1393
1394
If skip is 0 then the correct sql is generated as its slightly different SQL to when skip is a positive number
The bit its missing on the second select query is
The text was updated successfully, but these errors were encountered: