2015-02-18 1 views
-2
class Program 
{ 
    class Student 
    { 
     public int SID { get; set; } 
     public string Name { get; set; } 
     public string Major { get; set; } 
     public List<SubjGrade> SubjectGrades { get; set; } 
    } 

class SubjGrade 
{ 
    public string Subject { get; set; } 
    public decimal grade { get; set; } 
} 
static List<Customer> LoadCustomers(string file) {} 

static void Main(string[] args) 
{ 
    var Students = LoadStudents(@"C:\Users\Chris\Documents\Students.txt"); 

    var studXML = 
     new XElement("Root", 
         from student in Students 
         select new XElement("Student", 
            new XElement("SID",student.SID), 
            new XElement("Name",student.Name), 
            new XElement("Major",student.Major) 
         // ???? 
         // I cannot figure out how to create XElements 
         // for the SubjGrade list 
              ) // end student 
        ); // end root 
    Console.WriteLine(studXML); 


    // this test works just fine but not what i am trying achive 
    IEnumerable<Student> studs = from student in Students select student; 
    foreach (var s in studs) 
    { 
     Console.WriteLine("{0} {1}\t{2}", 
       s.SID.ToString(), s.Name, s.Major); 
     Console.WriteLine("Class Cnt: {0}", 
       s.SubjectGrades.Count.ToString()); 
     foreach (var g in s.SubjectGrades) 
     { 
      Console.WriteLine("\t{0}\t{1}", 
        g.Subject, g.grade.ToString());   
     } 
    } 
} 
+0

Не могу понять, как получить предмет и предметы класса в ученический элемент –

+0

Можете ли вы привести пример того, как вы хотите, чтобы он выглядел? – Bijington

ответ

3

Это позволит вам создать несколько элементов ранга ниже вашего Студенческого элемента.

var studXML = 
      new XElement("Root", 
          from student in Students 
          select new XElement("Student", 
             new XElement("SID", student.SID), 
             new XElement("Name", student.Name), 
             new XElement("Major", student.Major), 
             new XElement("Grades", 
                from subjectGrade in student.SubjectGrades 
                select new XElement("Grade", 
                   new XElement("Subject", subjectGrade.Subject), 
                   new XElement("Grade", subjectGrade.grade))) 
               ) // end student 
         ); // end root 
     Console.WriteLine(studXML); 

Обратите внимание, что это не гарантирует, что объект SubjectGrades равен нулю.

+1

Я бы поместил все '' элементы внутри одного '', чтобы сделать структуру XML лучше. Кроме того, я не уверен, что он даже скомпилируется, как сейчас. – MarcinJuraszek

+0

@MarcinJuraszek очень хороший пункт! Я действительно должен был сначала написать его в Visual Studio. Я отредактировал свой ответ, чтобы добавить тег Bijington

+0

спасибо. Я разместил следующий код и результаты. –