序列化多个列表对象到相同的XML文件C#
大家好我有三个列表包含来自同一类的对象。 例如,这里是我的清单:序列化多个列表<T>对象到相同的XML文件C#
List<Course> courselvl4 = new List<Course>();
List<Course> courselvl5 = new List<Course>();
List<Course> courselvl6 = new List<Course>();
我在想,如果有可能,序列化每个列表中,以相同的XML文件,并反序列化回来到列表中。谢谢。 我试图寻找答案,但无法找到任何地方。 如果已经回答,请直接联系。
你可以去这个,如果你想用适当的产能来初始化列表:
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;
}
没办法没想到!你能够将它反序列化回单独的列表吗? – Whome123
您还必须序列化课程级别,以便您可以反序列化所有内容,然后使用GroupBy级别来分割它们。 –
如果我的答案帮助你解决了你的问题,请接受它。谢谢! –
您可能尝试序列化'courselvl4.Union(courselvl5).Union(courselvl6)'在你的情况下联盟的结果将是IEnumerable类型 –