2016-10-19 3 views
-2

Ich habe drei verschiedene Listen einschließlich , courses und grades. Was ich tun möchte ist, einige der courses und Eigenschaften in grades Variablen zu verwenden. Hier ist mein Code:Wie kann ich ein Objekt in einer Liste als Referenz in einer anderen Liste zuweisen?

namespace educationsystem 
{ 
    public class student 
    { 
      public int scode { get; set; } 
      public string name { get;set;} 
      public string lastname {get;set;} 
      public long phone {get;set;} 
    } 
    public class course 
    { 
      public int code { get; set;} 
      public string name { set; get;} 
      public int unit { set; get;} 

    } 
    public class grade 
    { 
     public student studentinfo { get; set; } 
     public course courseinfo { get; set; } 
     public double value { get; set; } 
     public int term { get; set; } 
    } 

    public class education 
    { 


    } 
class Program 
{ 

    static void Main(string[] args) 
    { 

     List<student> Students = new List<student>(); 
     List<course> courses = new List<course>(); 
     List<int> grades = new List<int>(); 
     Students.Add(new student { scode=1,name = "mahta", lastname = "sahabi", phone = 3244 }); 
     Students.Add(new student { scode=2, name = "niki", lastname = "fard", phone = 5411 }); 
     Students.Add(new student { scode=3, name = "hana", lastname = "alipoor", phone = 6121 }); 
     courses.Add(new course { code = 1, name = "Mathemathics", unit = 3 }); 
     courses.Add(new course { code = 2, name = "physics", unit = 3 }); 
     courses.Add(new course { code = 3, name = "computer", unit = 3 }); 

     Students.ForEach((student) => { Console.WriteLine(student.scode+" "+student.name + " " + student.lastname + " " + student.phone); }); 
     courses.ForEach((course) => { Console.WriteLine(course.code + " " + course.name + " " + course.unit); }); 

     Console.ReadKey(); 
} 

Ich möchte die Noten drucken wie:

Mahta Sahabi Mathematik 20.

Wie kann ich so etwas tun?

+1

Sie haben es mit Kursen und Studenten getan, gibt es keinen Unterschied. Um auf einen Kursnamen zuzugreifen, benutze einfach 'grade.coursestinfo.name'. – Valentin

+0

Wenn du in derselben Zeile möchtest, ändere einfach die WriteLine in Write –

+4

Ich bin verwirrt, was du * hier eigentlich * fragst ... –

Antwort

0

eine Note zu codieren und drucken, können Sie verwenden:

List<grade> grades = new List<grade>(); // instead of List<int> 

// ... 

grades.Add(new grade 
{ 
    studentinfo = Students.Where(s => s.scode == 1).First(), 
    courseinfo = courses.Where(c => c.code == 1).First(), 
    value = 20.0d, 
    term = 1 
}); 

// ... 

grades.ForEach((grade) => { Console.WriteLine(grade.studentinfo.name + " " + grade.studentinfo.lastname + " " + grade.courseinfo.name + " " + grade.value); }); 

Ist das, was Sie suchen?

+0

ja genau! ich danke dir sehr –

0

Sie müssen beim Erstellen der grades-Sammlung die entsprechenden und courses zuordnen. Sie werden dann in der Lage sein, die assocation zuzugreifen, indem sie

grade.studentinfo.name 

und

grade.courseinfo.name 

Navigation Da es wahrscheinlich eine vieles sein: Beziehung zwischen Schülern und Kursen, wie über Ihre Objekte durch eine Initialisierung Dictionary, eine einfache Identifizierung der einzelnen Schüler und natürlich ermöglichen, wenn Sie die Zuordnungen zu Klasse definieren:

var students = new [] 
{ 
    new student { scode=1,name = "mahta", lastname = "sahabi", phone = 3244 }, 
    new student { scode=2, name = "niki", lastname = "fard", phone = 5411 }, 
    ... etc 
}.ToDictionary(s => s.scode); 

var courses = new [] 
{ 
    new course { code = 1, name = "Mathemathics", unit = 3 }, 
    .... 
}.ToDictionary(c => c.code); 

var grades = new [] 
{ 
    new grade { term = 1, value = 53, student = students[1], course = courses[2] }, 
    new grade { term = 2, value = 99, student = students[1], course = courses[1] }, 
... 
} 

Sie werden dann drucken können th wie folgt:

foreach(var grade in grades) 
{ 
    Console.WriteLine($"{grade.studentinfo.name} {grade.courseinfo.name} {grade.value}"); 
} 
Verwandte Themen