C # выводит XML из Linq в Response.OutputStream - PullRequest
0 голосов
/ 07 января 2010

Существует ли более простой способ вывода таблицы 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 Ответ

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

Попробуйте это:

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