1

Je présume que c'est possible? Fondamentalement, je reçois en utilisant les données LINQ (LINQ2Entities Entity Framework) et le renvoie à un IQUERYABLE une fois que j'ai besoin de les transformer en XML dans un flux mémoire et un fichier physique sur le disque dur - streamwriter ??Transformation des données extraites de LINQ (IQueryable) en XML?

Est-ce que quelqu'un sait si c'est possible?

Toute aide vraiment apprécié

Ai-je besoin d'utiliser LINQtoXML pour y parvenir?

Tous les exemples ou tutoriels que tout le monde connait seraient excellents.

Merci encore

EDIT

Après un peu d'enquête, je pense que je besoin d'un sérialiseur XML pour LINQ2Entities/IQueryable ??

Répondre

2

LINQ to XML est probablement le meilleur choix. Vous pouvez utiliser functional construction pour créer un arbre XML dans une instruction unique, comme:

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

Merci! Mais cela crée le XML en utilisant LINQtoXML, comment je transformerais mes données (qui existent déjà dans SQL Server) que j'ai dans un IQUERYABLE (de LINQ2ENTITIES) en XML. – Martin

+0

@Martin, vous devez simplement projeter des données à partir de 'IQueryable'. J'ai essayé de refléter cela dans ma réponse éditée. –

+0

Merci! juste ce dont j'avais besoin – Martin

0

Je sais que cette question est ancienne, mais je voulais montrer ma solution à ce problème.

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; 
    } 

En gros, cela prend juste votre IQueryable<T> et sérialise à XML et retourne que XML comme string.

alors vous essentiellement prendre cette chaîne et ....

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

Hope this helps pour les futurs visiteurs.