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");