Obecnie próbuję dodać zamówienie do kwerendy LINQ, która nakaże przez pole datetime w obiekcie EF:Zamówienie przez (rosnąco | desc) w LINQ do SQL Server obsługuje DateTime inaczej
return this.SortingDirection.Equals("asc", StringComparison.InvariantCultureIgnoreCase) ? entities.OrderBy(e => e.ProcessStartTime) : entities.OrderByDescending(e => e.ProcessStartTime);
Gdy SortingDirection
jest ustawiony na desc
, działa dobrze. Ale po ustawieniu na asc
nie otrzymuję żadnych nagrań!
Po obejrzeniu programu SQL Server Profiler okazuje się, że obiekty DateTime
są formatowane inaczej!
Dla DESC
:
ORDER BY [Project1].[StartTime] DESC',N'[email protected]__linq__22='2015-01-07 09:00:23',@p__linq__23='2015-01-07 09:00:23',@p__linq__24='2015-01-07 09:05:30',@p__linq__25='2015-01-07 09:05:30'
i ASC
:
ORDER BY [Project1].[StartTime] ASC',N'[email protected]__linq__22='2015-07-01 09:00:23',@p__linq__23='2015-07-01 09:00:23',@p__linq__24='2015-07-01 09:05:30',@p__linq__25='2015-07-01 09:05:30'
dniach i miesiącach zostały zamienione, powodując zapytania SQL nie zwraca wyników.
To dla mnie sugeruje, że metoda IQueryable.OrderBy()
nie używa poprawnego lokalnego formatu/innego formatu do OrderByDescending()
, czy może to być błąd w EF?
Czy jest coś w moim łączącym łańcuchu, który mógłbym dodać, aby wymusić ten lub inny sposób, w jaki mogłem sortować według tych dat?
Moja konfiguracja:
- .NET 4.5
- Entity Framework 5.0.0
- SQL Server 2012 Standardowy
Dziękujemy
Jak to możliwe, że * konkretna * wartość datetime, np. "2015-01-07", jest zaangażowany w klauzulę kolejności zamówienia? –
możliwy duplikat powiązania [MVC DateTime z nieprawidłowym formatem daty] (http://stackoverflow.com/questions/528545/mvc-datetime- binding-with-incorrect-date-format) – user2831628