C#将Linq中的XML输出到Response.OutputStream

时间:2010-01-07 20:43:45

标签: c# xml-serialization asp.net

有没有更简单的方法将Linq to SQL表输出到XML(最终到网页?)不幸的是,我没有使用MVC,但我可以在我的aspx C#页面中引用它。

我有这个:

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

并希望输出与此类似的内容(暂时不必完全相同):

<?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> 

我试过这样做:

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

但是我得到了“无法序列化iQueryable”。但是,我尝试了ToArray,ToList,AsEnumerable等,只是用myS.Serialize()得到“发生错误”。

有什么想法?希望有一种方法,如返回XML(myView);

1 个答案:

答案 0 :(得分:2)

试试这个:

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