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 ?