简体   繁体   English

从Linq到Response.OutputStream的C#输出XML

[英]C# Output XML from Linq to Response.OutputStream

Is there a simpler way to output a Linq to SQL table to XML (eventually to a web page?) Unfortunately, I am not using MVC, but I could put a reference to it in my aspx C# page. 有没有一种简单的方法可以将Linq to SQL表输出为XML(最终输出为网页?)不幸的是,我没有使用MVC,但是可以在aspx C#页面中引用它。

I have this: 我有这个:

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

and want to output something similar to this (doesn't have to be exact for now): 并想要输出与此类似的内容(现在不必确切):

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

I tried doing this: 我尝试这样做:

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

But I get a "Cannot serialize iQueryable". 但是我得到一个“无法序列化iQueryable”。 However, I tried ToArray, ToList, AsEnumerable, etc. and simply get "An error occured" with myS.Serialize(). 但是,我尝试使用ToArray,ToList,AsEnumerable等,并通过myS.Serialize()仅仅获取“发生错误”。

Any thoughts? 有什么想法吗? Hopefully there is a way like return XML(myView); 希望有一种类似return XML(myView);的方法。

Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM