Při code-reviews se opakovaně setkávám se snahou ošetřit null
v OrderBy
/Where
a v podobných LINQ extension metodách při použití EF Core. Například
.OrderBy(e => e.BossId.HasValue ? e.Boss.LastName : String.Empty)
Je to obvykle nadbytečné, ba dokonce nežádoucí.
LINQ provider výraz nevykonává, ale překládá do SQL, takže pohodlně funguje
.OrderBy(e => e.Boss.LastName)
přestože Boss
může být NULL
.
Možná takový zápis v C# tahá za oči, ale spíš bych se obával tu expression pro EF Core jakkoliv komplikovat, aby z toho nevznikl nějaký složitější dotaz než je potřeba.
Konkrétně krátká podoba vytvoří SQL klauzuli
a SQL si s NULL
pohodlně poradí, zatímco dlouhá podoba udělá
ORDER BY CASE
WHEN [e].[Id] IS NOT NULL THEN [e].[LastName]
ELSE N''''
END
…což obvykle nepotřebujete a v T-SQL by vás to nejspíš nikdy nenapadalo takhle řešit.
Líbí se mi to:
Líbí Načítání...