LINQ to XML. Оптимизация метода для сохранения документа - C#
Формулировка задачи:
В общем имеем такой метод:
думаю, что где что и так понятно, но на всякий случай структура документа
ну и описание элемента самого списка postList
Чаго хачу? Хачу избавиться от поиска последнего элемента Post, для добавления списка элементов Attachment, ну или на худой конец получать доступ к последнему элементу не выгребая весь список имеющихся постов.
PS Код на работоспособность пока не проверялся, так что в нем могут быть ошибки.
Листинг программы
- public void SaveColection(List<Post> postList, string path)
- {
- var doc = new XDocument();
- doc.Add(new XElement("PostCollection"));
- foreach (var item in postList)
- {
- doc.Root.Add(new XElement("Post",new XAttribute("Id", item.PostId)
- , new XElement("Text", item.PostText)
- , new XElement("Attachments")
- , new XElement("CountPublished", item.CountPublished)));
- var itemPost=doc.Descendants("Post").First(x => x.Attribute("Id").Value == item.PostId.ToString()).Element("Attachments");// больше всего напрягает вот эта строка
- foreach (var el in item.AttachList)
- {
- itemPost.Add(new XElement("Attachment"
- , new XAttribute("AttachId", el.AttachId)
- , new XElement("AttachAddress", el.AttachPlace)
- , new XElement("AttachType", el.AttachType)));
- }
- }
- doc.Save(path);
- }
Листинг программы
- <PostCollection>
- <Post Id="someUInt">
- <Text>SomeText</Text>
- <Attachments>
- <Attachment AttachId="someUInt">
- <AttachAddress>
- some path(string)
- </AttachAddress>
- <AttachType>
- typeDoc
- </AttachType>
- </Attachment>
- </Attachments>
- <CountPublished>
- counter (some uint)
- </CountPublished>
- </Post>
- ...
- </PostCollection>
Листинг программы
- uint PostId;
- string PostText;
- List<Attachment (свой класс)>AttachList;
Решение задачи: «LINQ to XML. Оптимизация метода для сохранения документа»
textual
Листинг программы
- var itemPost=item.Element("Attachments");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д