1

我认为这是可能的?基本上我正在接收使用LINQ(LINQ2Entities实体框架)数据并将其返回给IQUERYABLE一旦我需要将这些数据转换为XML内存流和硬盘上的物理文件 - streamwriter?将从LINQ(IQueryable)检索到的数据转换为XML?

有谁知道这是可能的吗?

任何帮助非常感激

我是否需要使用LINQtoXML做到这一点?

任何人都知道的任何示例或教程都很棒。

再次感谢

编辑

经过调查的一点点,我想我需要一个LINQ2Entities XML串行器/ IQueryable的?

回答

2

LINQ to XML可能是最好的选择。您可以使用functional construction在一个单独的语句来创建一个XML树,如:

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

谢谢!但是,这是使用LINQtoXML创建XML,我将如何将IQUERYABLE(来自LINQ2ENTITIES)中的数据(已经存在于SQL Server中)转换为XML。 – Martin 2010-11-07 08:27:01

+0

@Martin,你只需要从'IQueryable'投影数据。我试图在我编辑的答案中反映出这一点。 – 2010-11-07 08:36:08

+0

谢谢!正是我需要的 – Martin 2010-11-22 13:16:32

0

我知道这个问题是旧的,但我想显示我的解决方案,以解决这个问题。

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

基本上这只是需要您的IQueryable<T>并序列化为XML并返回XMLstring

然后,你基本上采取串并....

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

希望这有助于为今后的任何游客。