Bonsoir
oui tu peux écrire
string matiere = NoteDesEleves[5].NomMatiere;
si NoteDesEleves est une liste d'objet ayant une propriété NomMatiere de type string
non tu ne oeux pas écrire
Dictionary<string, int, bool> dict = new Dictionary<string, int, bool>();
un dictionaire est une liste d'objet avec un index
mais tu pourrais écrire
Dictionary<string, Dictionary> dict = new Dictionary<string, Dictionary>();
un dictionaire de dictionaires
et oui, pour ton exemple tu peux écrire
string nomEleve= NoteDesEleves["Géographie"].nomEleve;
Pour ton cas, je pense qu'il te faut un liste, ou un dictionaire, d'éleves ayant chacun une liste, ou un dictionaire, de notes
Ce qui te permetrait facilement de retrouver tes differentes données
exemple;
private class Note_eleve
{
public string NomMatiere { get; private set; }
public int Valeur { get; private set; }
public Note_eleve(string matiere, int note)
{
NomMatiere = matiere;
Valeur = note;
}
}
private class Eleve
{
public string Nom { get; private set; }
public string Adresse { get; private set; }
public Dictionary<string, Note_eleve> Notes = new Dictionary<string, Note_eleve>();//ses notes
public Eleve(string nom, string adresse)
{
Nom = nom;
Adresse = adresse;
}
}
public void testEleve()
{
//Liste des eleves
Dictionary<string, Eleve> Eleves = new Dictionary<string, Eleve>();
//on crée un eleve
Eleve moi = new Eleve("Moi", "Pessac");
Eleves.Add("Moi", moi);
//on lui donne ses notes
moi.Notes.Add("Géographie", new Note_eleve("Géographie", 12));
moi.Notes.Add("Math",new Note_eleve("Math", 16));
moi.Notes.Add("Français", new Note_eleve("Français", 10));
//on crée un autre eleve
Eleve toi = new Eleve("Toi", "Paris");
Eleves.Add("Toi", toi);
//et on lui donne ses notes
toi.Notes.Add("Géographie", new Note_eleve("Géographie", 13));
toi.Notes.Add("Math", new Note_eleve("Math", 17));
toi.Notes.Add("Français", new Note_eleve("Français", 11));
//recherche d'une note d'une matiere donnée pour un eleve donné
int MaNoteDeFrancais = Eleves["Moi"].Notes["Français"].Valeur;
//recherche toutes les notes d'une matiere
foreach (Eleve eleve in Eleves.Values)
{
Console.WriteLine("Eleve:{0} note de géo:{1}", eleve.Nom, eleve.Notes["Géographie"].Valeur);
}
//recherche toutes les notes d'un éléve
foreach (Note_eleve note in Eleves["Toi"].Notes.Values)
{
Console.WriteLine("Note de {0} = {1}", note.NomMatiere,note.Valeur);
}
}
Bob
C# is amazing, enjoy it!