Bonjour

Mon but final est de transformer en LINQ la requête SQL suivante:
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
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
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)
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
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;
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".

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...