从LINQ结果创建XML

时间:2009-09-28 09:42:59

标签: xml linq

如果我使用LINQ从数据库中检索结果,有没有办法可以自动生成XML来生成XML?

例如:

DataClasses1DataContext db = new DataClasses1DataContext(C_CONN_STRING);
var q = from stock in db.GetTable<Stock>()
        where stock.Group == 1
        select stock;

foreach(Stock s in q)
{
     //automatically create XML document here?
}

对不起,如果这是一个非常基本的问题,任何帮助表示赞赏

2 个答案:

答案 0 :(得分:7)

我们不知道您的Stock对象的确切内容,我们不知道您想要生成的XML的形式,所以这只是一个疯狂的猜测......

    DataClasses1DataContext db = new DataClasses1DataContext(C_CONN_STRING);
    var q = from stock in db.GetTable<Stock>()
            where stock.Group == 1
            select stock;

    XDocument doc = new XDocument();
    foreach(Stock s in q)
    {
        doc.Add(
            new XElement("Stock"
                new XAttribute("Group", stock.Group),
                new XAttribute("Product", stock.Product),
                new XAttribute("Quantity", stock.Quantity)));
    }

答案 1 :(得分:1)

您可以使用VB来执行此操作,因为它支持代码中的XML文字。

如果你必须使用C#,你可以使用XElement(取自C# in Depth的例子):

var users = new XElement("users",
    from user in SampleData.AllUsers
    select new XElement("user",
        new XAttribute("name", user.Name),
        new XAttribute("type", user.UserType))
);

这会产生这样的结果:

<users>
    <user name="Tim Trotter" type="Tester" />
    <user name="Tara Tutu" type="Tester" />
    <user name="Deborah Denton" type="Developer" />
    <user name="Darren Dahlia" type="Developer" />
    <user name="Mary Malcop" type="Manager" />
    <user name="Colin Carton" type="Customer" />
</users>