2017-11-25 5 views
0

こんにちは皆同じクラスのオブジェクトを含む3つのリストがあります。 はたとえば、ここに私のリストです:複数のList <T>のオブジェクトを同じXM​​Lファイルに直列化する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)'あなたの場合のUnionの結果は、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

私の答えがあなたの問題を解決するのを助けたら、それを受け入れてください。ありがとう! –

関連する問題