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

내 답변이 문제 해결에 도움이된다면 동의하십시오. 감사! –