Преобразование данных, извлеченных из LINQ (IQueryable) в XML? - PullRequest
1 голос
/ 07 ноября 2010

Полагаю, это возможно? В основном я получаю с помощью LINQ (LINQ2Entities Entity Framework) данные и возвращаю их в IQUERYABLE, как только мне эти данные мне нужно преобразовать в XML в потоке памяти и физическом файле на жестком диске - streamwriter ??

Кто-нибудь знает, возможно ли это?

Любая помощь действительно ценится

Нужно ли использовать LINQtoXML для этого?

Любые примеры или учебники, о которых кто-либо знает, были бы великолепны.

Еще раз спасибо

EDIT

После небольшого исследования я думаю, что мне нужен XML Serializer для LINQ2Entities / IQueryable ??

Ответы [ 3 ]

2 голосов
/ 16 ноября 2012

Классы сущностей по умолчанию являются контрактами данных, что означает, что они могут быть сериализованы на основе полей, которые они содержат:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

2 голосов
/ 07 ноября 2010

LINQ to XML , вероятно, лучший выбор.Вы можете использовать функциональную конструкцию для создания дерева XML в одном выражении, например:

using (ContactEntities context = new ContactEntities()) {
    XDocument xml = new XDocument(
        new XElement("contacts",
            from contact in context.Contacts
            orderby contact.ContactId
            select new XElement("contact",
                new XAttribute("contactId", contact.ContactId),
                new XElement("firstName", contact.FirstName),
                new XElement("lastName", contact.LastName))));
    xml.Save(yourStream);
}
0 голосов
/ 19 октября 2013

Я знаю, что этот вопрос старый, но я хотел показать свое решение этой проблемы.

public static string CreateXml<T>(IQueryable<T> thisQueryable)
    {
        var thisList = thisQueryable.ToList();
        var xmlResult = "";
        using (var stringWriter = new StringWriter())
        {
            using (var xmlWriter = new XmlTextWriter(stringWriter))
            {
                var serializer = new XmlSerializer(typeof(List<T>));
                serializer.Serialize(xmlWriter, thisList);
            }
            xmlResult = stringWriter.ToString();
        }
        return xmlResult;
    }

Обычно это просто берет ваш IQueryable<T> и сериализует его в XML и возвращает XML как string.

Тогда вы бы взяли эту строку и ....

var xmlDoc = new XmlDocument();
xmlDoc.Load(xmlResult);

Надеюсь, это поможет любым будущим посетителям.

...