J'ai un code SQL qui effectue un ordre par cas. Cela fonctionne bien. Je ne peux pas le répliquer en Linq2Sql.
Voici une version rapide du SQL que j'ai fait, simplifié et vraiment simplifié. Je vous prie d'ignorer ce que le SQL essaie de faire (du point de vue de la logique d'entreprise) car je l'ai inventé, pour la question.
SELECT
u.Id,
u.Name
FROM Users u
ORDER BY CASE
WHEN u.Name IS NULL THEN 1
WHEN LEN(u.Name) < 3 THEN 2
WHEN LEN(u.Name) < 10 THEN 3
WHEN LEN(u.Name) < 5555 THEN 4
ELSE 5
END ASC
Lorsque j'essaie de faire cela avec Linq2Sql, j'obtiens une erreur anonyme.
Voici le code Linq2Sql :_
from u in db.User
orderby new {
UserNameType = (u.Name == null ? 1 :
u.Name.Length < 3 ? 2 :
u.Name.Length < 10 ? 3 :
u.Name.Length < 5555 ? 4 :
5)
}
select u;
Comment puis-je commander une déclaration de cas ?