Bonjour.
Je cherche à remplir un arbre de nœuds où un nœud représente un fichier ou un dossier.
J'ai donc les modèles suivants, simplifiés
où la table NodeType n'a que deux lignes folder et file.
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
16
17
18
19
20
21
22
23
24 class Node { [Key] int Id { get; set; } string Path { get; set; } NodeType Type { get; set; } Node Parent { get; set; } [NotMapped] ICollection<Node> Children { get; set; } //d'autres infos } class NodeType { [Key] int Id { get; set; } string Type { get; set; } //"folder" ou "file" //d'autres infos }
J'accède aux données comme ceci :
L'arbre (un TreeView en WPF) est affiché correctement, mais je ne peux pas savoir si le nœud est un dossier ou un fichier, car le champ Nodes[n].NodeType est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //Prepare the query to filter nodes var query = (from n in context.Nodes join nt in context.NodeTypes on n.NodeType equals nt where n.Project.Id == CurrentProject.Id orderby n.NodeType.Id select n); //select new { n.Id, n.Children, n.Parent, n.Path, n.NodeType }; //Remplir le champ Children query.ForEachAsync( n=>n.Children = query.Where(nn => nn.Parent.Id.Equals(n.Id)).ToList() ).Wait(); var Nodes = query.ToList(); //me retourne un List<Node> dont les NodeType ne sont pas renseignés
Donc ma question est comment accéder à ce champ ?
J'ai vu qu'on peut sélectionner plusieurs éléments avec la syntaxe select new {n.Id, n.Children, ...}, mais quand je remplis le champ Children j'obtiens une erreurComment faire ?CS1061 'object' does not contain a definition for 'Children' and no extension method 'Children' accepting a first argument of type 'object' could be found
Partager