LINQ ou SQL, comment pourrais-je avoir les chaînes suivantes, normalement classés comme:Trier la colonne varchar en commençant par la première lettre au lieu du premier caractère?
"banane" pomme coco
sorte que:
pomme "banane" coco
LINQ ou SQL, comment pourrais-je avoir les chaînes suivantes, normalement classés comme:Trier la colonne varchar en commençant par la première lettre au lieu du premier caractère?
"banane" pomme coco
sorte que:
pomme "banane" coco
Mise à jour basée sur votre commentaire
IList<string> sorted = context.Terms.ToList()
.OrderBy(t => Regex.Replace(t.Term, @"\W*","")).ToList();
Sur SQL, vous pouvez le trier sans avoir besoin REGEX
fonctions en soi, vous pouvez utiliser PATINDEX
. Essayez ceci:
SELECT *
FROM Table
ORDER BY RIGHT(Column,LEN(Column)-patindex('%[a-zA-Z]%',Column)+1)
De cette façon, vous triez la table en utilisant la première lettre de la colonne, en ignorant les autres personnages
Cela fonctionne parfaitement, merci. Je ne peux accepter qu'une réponse, et j'ai fini par utiliser LINQ, mais j'apprécie votre aide. – mattucg
Vous pouvez ajouter une colonne qui ne contient que la chaîne alphanumérique, puis trier à ce sujet.
La fonction RemoveNonAlphaCharacters trouvée here vous permettra de filtrer les caractères non alphanumériques. Si la table est très petite et que les performances ne sont pas un problème, vous pouvez simplement
ORDER BY RemoveNonAlphaCharacters(columnToClean)
Bien, vous demandez à SQL ou à LINQ d'ignorer le caractère spécial principal, vous aurez donc besoin d'une forme d'expression régulière, et vous pourriez finir par charger la table en mémoire pour nettoyer les données. Cela semble risqué. –