Hello,
I'm working on a query which contains orderby elements.
IQueryable<PrixGranulat> query = UnitOfWorkHolder.Current.PrixGranulats;
query = query.Where(p => p.Periode <= periode);
query = query.GroupBy(px => px.Granulat).Select(g => g.OrderByDescending(t => t.Periode).First());
query = query.OrderBy(px => px.Granulat.TypeGranulat.Nom).ThenBy(px => px.Granulat.Lieu.Carriere.Nom).ThenBy(px => px.Granulat.Lieu.Nom).ThenBy(px => px.Granulat.Granulometrie.Ordre);
page.data = query.ToList<Entity>();
return page;
This query works perfectly except it doesn't respect the specified order definition in the resulted List.
I traced the SQL to verify, and the generated statement respects perfectly the order by.
SELECT
Granulat.ID AS [Granulat.ID],
Granulat.CUID AS [Granulat.CUID],
Granulat.GranulometrieId AS [Granulat.GranulometrieId],
Granulat.LieuId AS [Granulat.LieuId],
Granulat.TypeGranulatId AS [Granulat.TypeGranulatId]
FROM
Granulat
WHERE
Granulat.ID IN (1890, 1891, 1893, 1896, 1898, 1950, 1951, 1953, 1955, 1957, 1970, 1971, 1973, 1975, 1977, 1980, 1981, 1983, 1985, 1987)
--> Time: 0 ms
SELECT
PrixGranulat.ID AS [PrixGranulat.ID],
PrixGranulat.CUID AS [PrixGranulat.CUID],
PrixGranulat.GranulatId AS [PrixGranulat.GranulatId],
PrixGranulat.Periode AS [PrixGranulat.Periode],
PrixGranulat.PerteHumidite AS [PrixGranulat.PerteHumidite],
PrixGranulat.PerteSol AS [PrixGranulat.PerteSol],
PrixGranulat.PrixDepart AS [PrixGranulat.PrixDepart],
PrixGranulat.Transport AS [PrixGranulat.Transport]
FROM
PrixGranulat
LEFT OUTER JOIN
Granulat
ON
PrixGranulat.GranulatId = Granulat.ID
LEFT OUTER JOIN
TypeGranulat
ON
Granulat.TypeGranulatId = TypeGranulat.ID
LEFT OUTER JOIN
Lieu
ON
Granulat.LieuId = Lieu.ID
LEFT OUTER JOIN
Carriere
ON
Lieu.CarriereId = Carriere.ID
LEFT OUTER JOIN
Granulometrie
ON
Granulat.GranulometrieId = Granulometrie.ID
WHERE
(PrixGranulat.Periode <= '01/01/2012 00:00:00' AND PrixGranulat.GranulatId IN (1890, 1891, 1893, 1896, 1898, 1950, 1951, 1953, 1955, 1957, 1970, 1971, 1973, 1975, 1977, 1980, 1981, 1983, 1985, 1987))
ORDER BY
TypeGranulat.Nom,
Carriere.Nom,
Lieu.Nom,
Granulometrie.Ordre
--> Time: 1 ms
Any idea ?
Thanks in advance.
Jonathan.