Bonjour, voila je suis entrain d'en apprendre plus sur le LINQ mais voila, j'ai du mal effectuer une requête qui est censée alimenter un list. J'ai avec moi un livre dédié entièrement au LINQ, j'ai beau adapté leur exemple à mon contexte , rien ne marche.
Voici l'implémentation des classes métiers :
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 class Genre { public string Code { get; set; } public string Libelle { get; set; } } class Film { public int Numero { get; set; } public string Titre { get; set; } public int AnneeProduction { get; set; } public string Synopsis { get; set; } public string Photo { get; set; } public List<Genre> Genres { get; set; } }
J'ai ensuite créer une classe technique qui permet de gérer une playlist de film, voici la classe qui charge les éléments du fichiers XML dans un attributs de cette classe, l'erreur vient bien sur de la méthode LoadPlaylist :
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
25
26
27
28
29
30
31 class Playlist { public string Intitule { get; set; } //ne fait pas attention à cette attribut public List<Film> Films { get; set; } public void LoadPlaylist() { XElement xmlFilms = XElement.Load("F:/mesfilms.xml"); var tTemp = ( from oFilm in xmlFilms.Elements("film") select new Film { Numero = (Int32)oFilm.Attribute("numero"), Titre = (String)oFilm.Attribute("titre"), AnneeProduction = (Int32)oFilm.Attribute("annee"), Synopsis = (String)oFilm.Attribute("synopsis"), Photo = (String)oFilm.Attribute("photo"), Genres = ( from oGenre in oFilm.Descendants("genre") select new Genre{ Code = (String)oGenre.Attribute("code"), Libelle = (String)oGenre.Attribute("libelle"), } ).ToList() }).ToList(); Films = tTemp; } }
Voila mais quand j'execute le tout il me signale une exception FormatException, or j'ai beau vérifier je ne remarque aucuns problèmes, j'espère que vous aurez une meilleur analyse que moi sur cette erreur car je suis perdu.
Voici le fichier XML :
Voila si vous avez besoin de renseignement n'hésitez pas.
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 <?xml version="1.0" encoding="utf-8"?> <films> <film numero="1" titre="bilou" annee="jojo" synopsis="kjyfutfjdtjyd" photo="jhlgfsilgdfslig"> <genres> <genre code="COM" libelle="Comedie" /> <genre code="HOR" libelle="Horreur" /> </genres> </film> <film numero="2" titre="bilou" annee="jojo" synopsis="kjyfutfjdtjyd" photo="jhlgfsilgdfslig"> <genres> <genre code="COM" libelle="Comedie" /> <genre code="HOR" libelle="Horreur" /> </genres> </film> <film numero="3" titre="bilou" annee="jojo" synopsis="kjyfutfjdtjyd" photo="jhlgfsilgdfslig"> <genres> <genre code="COM" libelle="Comedie" /> <genre code="HOR" libelle="Horreur" /> </genres> </film> </films>
Cordialement
Toham
EDIT : J'ai essayer un autre moyen mais cette fois c'est une exception NullreferenceException qui est générée voici le nouveau code :
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
25
26
27
28
29
30
31 class Playlist { public string Intitule { get; set; } //ne fait pas attention à cette attribut public List<Film> Films { get; set; } public void LoadPlaylist() { XElement xmlFilms = XElement.Load("F:/mesfilms.xml"); var tTemp = ( from oFilm in xmlFilms.Element("films").Descendants("film") select new Film { Numero = (Int32)oFilm.Attribute("numero"), Titre = (String)oFilm.Attribute("titre"), AnneeProduction = (Int32)oFilm.Attribute("annee"), Synopsis = (String)oFilm.Attribute("synopsis"), Photo = (String)oFilm.Attribute("photo"), Genres = ( from oGenre in oFilm.Element("genres").Descendants("genre") select new Genre{ Code = (String)oGenre.Attribute("code"), Libelle = (String)oGenre.Attribute("libelle"), } ).ToList() }).ToList(); Films = tTemp; } }
Partager