LINQ to XML. Оптимизация метода для сохранения документа - C#

Узнай цену своей работы

Формулировка задачи:

В общем имеем такой метод:
Листинг программы
  1. public void SaveColection(List<Post> postList, string path)
  2. {
  3. var doc = new XDocument();
  4. doc.Add(new XElement("PostCollection"));
  5. foreach (var item in postList)
  6. {
  7. doc.Root.Add(new XElement("Post",new XAttribute("Id", item.PostId)
  8. , new XElement("Text", item.PostText)
  9. , new XElement("Attachments")
  10. , new XElement("CountPublished", item.CountPublished)));
  11. var itemPost=doc.Descendants("Post").First(x => x.Attribute("Id").Value == item.PostId.ToString()).Element("Attachments");// больше всего напрягает вот эта строка
  12. foreach (var el in item.AttachList)
  13. {
  14. itemPost.Add(new XElement("Attachment"
  15. , new XAttribute("AttachId", el.AttachId)
  16. , new XElement("AttachAddress", el.AttachPlace)
  17. , new XElement("AttachType", el.AttachType)));
  18. }
  19. }
  20. doc.Save(path);
  21.  
  22. }
думаю, что где что и так понятно, но на всякий случай структура документа
Листинг программы
  1. <PostCollection>
  2. <Post Id="someUInt">
  3. <Text>SomeText</Text>
  4. <Attachments>
  5. <Attachment AttachId="someUInt">
  6. <AttachAddress>
  7. some path(string)
  8. </AttachAddress>
  9. <AttachType>
  10. typeDoc
  11. </AttachType>
  12. </Attachment>
  13. </Attachments>
  14. <CountPublished>
  15. counter (some uint)
  16. </CountPublished>
  17. </Post>
  18. ...
  19. </PostCollection>
ну и описание элемента самого списка postList
Листинг программы
  1. uint PostId;
  2. string PostText;
  3. List<Attachment (свой класс)>AttachList;
Чаго хачу? Хачу избавиться от поиска последнего элемента Post, для добавления списка элементов Attachment, ну или на худой конец получать доступ к последнему элементу не выгребая весь список имеющихся постов. PS Код на работоспособность пока не проверялся, так что в нем могут быть ошибки.

Решение задачи: «LINQ to XML. Оптимизация метода для сохранения документа»

textual
Листинг программы
  1. var itemPost=item.Element("Attachments");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы