2011-09-03 45 views
1

我對Windows Phone平臺的應用程序的工作。遇到問題。如何合併/連接兩個不同的名單到1

我最好2個不同的列表,圖1是從XML文件直讀,以及其他一些計算。我想將這兩個列表合併爲1,這樣我就可以顯示出來。

表1:

public class studentClass1 
{ 
    public string studentID { get; set; } 
    public string studentFirstName { get; set; } 
    public string studentLastName { get; set; } 
} 

表2:

public class studentClass2 
{ 
    public string studentID { get; set; } 
    public string studentGradePoint { get; set; } 
} 

首先,我必須通過

var studentList= from query in studentIndex.Descendants("student") 
          select new driversClass 
StudentList1 = studentList.ToList(); 

其次讀出的studentClass1,我處理學生的績點計算在功能和輸出到第二個清單:

studentClass2 SG = new studentClass2 
      { 
       studentID = thestudentID , 
       studentGradePoint = thestudentGradePoint .ToString() 
      }; 

      StudentList2.Add(SG); 

studentListAll = StudentList1 + StudentList2 

現在,我想加入這個兩個列表一起,這樣我可以輸出到通過調用

studentResultListBox.Itemsource = StudentListAll; 

任何建議代碼是如何將看起來像屏幕? 謝謝。

回答

3

假設你剛要適當的信息組合兩個列表(它不是從你的問題完全清楚) - 推出第三類studentClass3包含所有你想要的屬性和使用連接到匹配立場與匹配studentID

var studentList3 = (from s1 in studentList1 
        join s2 in studentList2 on s1.studentID equals s2.studentID 
        select new studentClass3() 
        { 
         studentFirstName = s1.studentFirstName, 
         studentID = s1.studentID, 
         studentGradePoint = s2.studentGradePoint, 
         studentLastName = s1.studentLastName 
        }).ToList(); 

一般這種問題應該當你在XML不是試圖名單稍後閱讀結合起來進行,而解決 - 有學生三種不同類可能會造成混亂。另外看看推薦的命名約定,它們有點關閉。

+0

沒有真正意義上的不同,但如果它只是設置ItemsSource,我會想象他可以逃脫只是讓他們加入到anon類型 –

0

使用接口,例如

interface IStudent 
{ 
    string studentID { get; } 

    // other common properties below 
} 

public class StudentClass1 : IStudent 
{ 
    public string studentID { get; set; } 
    public string studentFirstName { get; set; } 
    public string studentLastName { get; set; } 
} 

public class StudentClass2 : IStudent 
{ 
    public string studentID { get; set; } 
    public string studentGradePoint { get; set; } 
} 

然後

studentResultListBox.Itemsource = list1.Cast<IStudent>() 
              .Concat(list2.Cast<IStudent>()) 
              .ToList(); 

或者,如果繼承不是這樣的,只投一切System.Object的(+覆蓋object.ToString)

studentResultListBox.Itemsource = list1.Cast<object>() 
             .Concat(list2.Cast<object>()) 
             .ToList(); 
+0

其實,你應該重寫Object.toString方法在你的學生*類顯示在列表框中 – Kef

+0

卡夫嗨相關的信息,你的代碼didnt匹配studentID在這兩個列表,以1個單dispaly。我使用了你的建議代碼,它在列表的開頭顯示學生名字,然後是成績點。不匹配studentID [1] = studentPoint [1]類型。有任何想法嗎? –

+0

@shawchyn:對不起。我錯過了原始發佈的一些細節。順便說一句,BrokenGlass回答了你的問題。 – Kef

相關問題