2017-11-25 99 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

如果我的答案帮助你解决了你的问题,请接受它。谢谢! –