Bonjour
Mon but final est de transformer en LINQ la requête SQL suivante:
t_entities.entity_code est de type string et voici le contenu de la colonne
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT entity_code, entity_name FROM t_entity ORDER BY COALESCE(NULLIF(LEN(LEFT(entity_code, CHARINDEX('(', entity_code))), 0) - 1, LEN(entity_code)), entity_code
J'ai voulu commencer par un petit bout de la requête en faisant ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 6/A 6/AA 6/B 6/C 6/D 6/E 6/F 6/G 6/H 6/I 6/J 6/K 6/A(a) 6/A(b) 6/A(c)
Mais je n'arrive pas à trier en utilisant l'expression t_entities.entity_code.Substring(0, t_entities.entity_code.IndexOf("(")), erreur: "Invalid length parameter passed to the LEFT or SUBSTRING function".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 GridView2.DataSource = from t_entities in ctx.t_entities where t_entities.entity_code.StartsWith("6/") orderby t_entities.entity_code.Substring(0, t_entities.entity_code.IndexOf("(")) select t_entities;
Si j'ai bien compris (je débute en LINQ et d'ailleurs j'y pige que dalle, et je ne trouve aucune manuel expliquant sa syntaxe qui est un peu du chinois pour moi), le NULL n'est pas géré dans le Substring. J'ai essayé d'ajouter des "x ? a : b" mais pas mieux, ça plante sur le typage du NULL, du "int" est attendu mais il considère que le IndexOf ne retourne pas du "int".
Bref désolé si je ne suis pas clair, demandez moi si besoin de plus de détails...
Partager