2016-10-19 4 views
-2

私は、students,courses、およびgradesを含む3つの異なるリストを持っています。私がしたいのは、coursesstudentsのいくつかのプロパティをgrades変数に使用することです。ここに私のコードは次のとおりです。私はそんなことをどのように行うことができます20あるリストのオブジェクトを別のリストの参照としてどのように割り当てるか?

mahta sahabi数学:

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(); 
} 

私のような成績を印刷したいですか?グレードをハードコーディングし、それを印刷し、あなたが使用することができますし

+1

あなたはコースや学生と一緒にやったことがありますが、違いはありません。コース名にアクセスするには 'grade.courseinfo.name'を使用してください – Valentin

+0

同じ行にしたい場合は、WriteLineをWriteに変更してください –

+4

ここにあなたが実際にお尋ねしているものは混乱しています... –

答えて

0

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); }); 

は、あなたが探していたものということですか?

+0

はい!どうもありがとうございます –

0

gradesコレクションを作成するときは、適切なstudentscoursesを関連付ける必要があります。おそらく多く存在しますので、あなたはそれに

grade.studentinfo.name 

grade.courseinfo.name 

をナビゲートしてassocationにアクセスできるようになります:、学生とコースの間に多くの関係方法を通して、あなたのオブジェクトを初期化についてDictionary、あなたはグレードに関連付けを定義するときに、各学生はもちろんの容易な同定を可能にする:

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] }, 
... 
} 

あなたはその後、目を印刷することができます

foreach(var grade in grades) 
{ 
    Console.WriteLine($"{grade.studentinfo.name} {grade.courseinfo.name} {grade.value}"); 
} 
関連する問題