Bonjour,
J'ai un souci de typage et de spécialisation avec la méthode Where() sur une liste.
Voici mes classes :
Code csharp : 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 public class Vehicule { public int id; public string name; public string type = "vehicule"; } public class Voiture : Vehicule { public Voiture() { type = "voiture"; } } public class Camion : Vehicule { public Camion() { type = "camion"; } }
Et mon code qui coince :
Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 IEnumerable<Vehicule> vehicules = new() { new Voiture() { id=1, name="Voiture 1" }, new Camion() { id=1, name="Camion 1" }}; IEnumerable<Voiture> voitures = (IEnumerable<Voiture>)vehicules.Where(a => a.type == "voiture");
Ca plante sur la seconde ligne.
Pourtant, le Where ne retourne bien que des Voitures... Comment faire pour lui faire comprendre ?
Partager