2013-03-11 70 views
0

新手在這裏,我的代碼有問題。在此代碼返回一個字符串數組(學生姓名)之前,但我需要添加學生ID而不需要我重新編碼整個方法。有人可以幫助我如何做到這一點?基本上我需要包含基於學生姓名的學生證。NEWBIE:從IEnumerable選擇2個或更多信息選擇

TIA。

public Student[] GetAllStudents(string subject) 
    { 
     Student[] students = cache.GetAllStudents(subject); 

     if (students == null) 
     { 
      Subjects group = RetrieveSubjects(subject); 

      if (group != null) 
      { 
       students = group.Students.Select(r => r.StudentName).ToArray(); 
       // I need to include also the Student ID based on the Student Name queried above. 

      } 
      else 
      { 
       students = new string[0]; 
      } 

      cache.AddAllStudents(subject, students); 
     } 

     return students; 
    } 
+0

'Student'是'string'的別名嗎?這個怎麼用? – 2013-03-11 07:16:04

回答

1

您可以在選擇子句中使用匿名類,即

students = group.Students 
        .Select(r => new { name= r.StudentName, id= r.StudentID }) 
        .ToArray(); 

或者只選擇Student對象,它應該擁有所有你需要

students = group.Students.ToArray(); 

// doing .Select(r=>r) is redundant and can be omited 

似乎是你需要創建你的studentinfo類中的學生類,你會想在初始化器中改變道具。

students = group.Students 
        .Select(r => new Student { 
         StudentName= r.StudentName, 
         StudentID= r.StudentID 
        }) 
        .ToArray(); 
+0

如果沒有「動態」混亂,這將不會返回... – 2013-03-11 07:16:35

+0

@lc。我實際上更新了我的答案,他似乎根本不需要選擇,因爲他可以使用'Student'對象,因爲他正在返回數組。 – vittore 2013-03-11 07:18:25

+0

感謝您的即時回覆。我的學生班將如何?現在這裏是我的學生班公開課學生 { public string Name {get;設置;} public int Studentid {get;設置;} } – Scuttle 2013-03-11 07:20:09