2010-01-07 3 views
0

Existe-t-il un moyen plus simple de générer une table Linq to SQL en XML (éventuellement sur une page Web?) Malheureusement, je n'utilise pas MVC, mais je pourrais y faire référence dans ma page C# aspx.C# Sortie XML de Linq à Response.OutputStream

J'ai ceci:

var myView = (from x in db.myTable 
       where x.Name.Contains("Bob") 
       select new person {Name = x.Name, Job = x.Job).Take(100); 

et que vous souhaitez afficher quelque chose de similaire à ce (ne doit pas être exacte pour l'instant):

<?xml version="1.0" encoding="utf-8"?> 
<myView xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <person><Name>Bob Smith</Name><Job>Machinist</Job></person> 
    <person><Name>Bob Smithers</Name><Job>Cartoonist</Job></person> 
    <person><Name>Rebob Wilson</Name><Job>Mason</Job></person> 
</myView> 

J'ai essayé de le faire:

TextWriter myTW = new StreamWriter(Response.OutputStream, Encoding.UTF8); 
XmlTextWriter xmlTW = new XmlTextWriter(myTW); 
XmlSerializer myS = new XmlSerializer(typeof(person)); 
myS.Serialize(xmlTW, myView); 

Mais je reçois un "Ne peut pas sérialiser iQueryable". Cependant, j'ai essayé ToArray, ToList, AsEnumerable, etc. et obtenir simplement "Une erreur est survenue" avec myS.Serialize().

Des pensées? Heureusement, il existe un moyen comme le retour XML (myView);

Répondre

2

Essayez ceci:

var result = myView.ToArray(); 
var serializer = new XmlSerializer(result.GetType()); 
serializer.Serialize(Response.OutputStream, result); 
+0

Maintenant, cela a fonctionné comme un charme! Merci. –