2017-11-25 171 views
0

大家好我有三個列表包含來自同一類的對象。 例如,這裏是我的清單:序列化多個列表<T>對象到相同的XML文件C#

List<Course> courselvl4 = new List<Course>(); 
    List<Course> courselvl5 = new List<Course>(); 
    List<Course> courselvl6 = new List<Course>(); 

我在想,如果有可能,序列化每個列表中,以相同的XML文件,並反序列化回來到列表中。謝謝。 我試圖尋找答案,但無法找到任何地方。 如果已經回答,請直接聯繫。

+0

您可能嘗試序列化'courselvl4.Union(courselvl5).Union(courselvl6)'在你的情況下聯盟的結果將是IEnumerable類型

回答

0

你可以去這個,如果你想用適當的產能來初始化列表:

Int32 capacity = courselvl4.Count + courselvl5.Count + courselvl6.Count; 

List<Course> courses = new List<Course>(capacity); 
courses.AddRange(courselvl4); 
courses.AddRange(courselvl5); 
courses.AddRange(courselvl6); 

或者:

List<Course> courses = courselvl4 
       .Concat(courselvl5) 
       .Concat(courselvl6) 
       .ToList(); 

然後只是去:

SerializeCourses("CoursesList",courses); 

private static XDocument SerializeCourses(String rootElement, List<Course> courses) 
{ 
    XDocument doc = new XDocument(); 

    using (XmlWriter writer = doc.CreateWriter()) 
    { 
     writer.WriteStartElement(rootElement); 

     foreach (Course course in courses) 
      new XmlSerializer(typeof(Course)).Serialize(writer, course); 

     writer.WriteEndElement(); 
    } 

    return doc; 
} 
+0

沒辦法沒想到!你能夠將它反序列化回單獨的列表嗎? – Whome123

+0

您還必須序列化課程級別,以便您可以反序列化所有內容,然後使用GroupBy級別來分割它們。 –

+0

如果我的答案幫助你解決了你的問題,請接受它。謝謝! –