C# 使用LINQ将两个表中的SQL数据输出到XML中
我对这个很陌生。希望有人能帮我建议如何改进代码 我有两个表,需要在其中获取SQL数据并将其输出为XML格式。我正在使用LINQ方法。下面是代码的外观C# 使用LINQ将两个表中的SQL数据输出到XML中,c#,sql-server,xml,linq,C#,Sql Server,Xml,Linq,我对这个很陌生。希望有人能帮我建议如何改进代码 我有两个表,需要在其中获取SQL数据并将其输出为XML格式。我正在使用LINQ方法。下面是代码的外观 #region Database XML Methods private static void CreateDatabaseXml(string path) { tbchrDataContext db = new tbchrDataContext(); XDocument doc = new XDocument(
#region Database XML Methods
private static void CreateDatabaseXml(string path)
{
tbchrDataContext db = new tbchrDataContext();
XDocument doc = new XDocument(
// XML Declaration
new XDeclaration("1.0", "utf-8", "yes"),
// XML Root element to 3rd in nest
new XElement(ns + "WMS",
new XElement(ns + "Order",
new XElement(ns + "Header", from a in db.T_ORDER_DETAILs
select new XElement(ns + "RARefNum", a.RARefNum),
new XElement (ns + "WMSCategory", from b in db.T_ORDER_HEADERs select b.Customer),
new XElement (ns + "CustomerID", from a in db.T_ORDER_DETAILs select a.SupplierName)))) );
#endregion
doc.Save(path);
}
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<WMS xmlns="http://blog.cripperz.sg">
<Order>
<Header>
<RARefNum>RASO000001</RARefNum>
<RARefNum>RASO000001</RARefNum>
<WMSCategory>ESSVMI</WMSCategory>
<CustomerID>nVidianVidia</CustomerID>
</Header>
</Order>
</WMS>
下面是XML的输出
#region Database XML Methods
private static void CreateDatabaseXml(string path)
{
tbchrDataContext db = new tbchrDataContext();
XDocument doc = new XDocument(
// XML Declaration
new XDeclaration("1.0", "utf-8", "yes"),
// XML Root element to 3rd in nest
new XElement(ns + "WMS",
new XElement(ns + "Order",
new XElement(ns + "Header", from a in db.T_ORDER_DETAILs
select new XElement(ns + "RARefNum", a.RARefNum),
new XElement (ns + "WMSCategory", from b in db.T_ORDER_HEADERs select b.Customer),
new XElement (ns + "CustomerID", from a in db.T_ORDER_DETAILs select a.SupplierName)))) );
#endregion
doc.Save(path);
}
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<WMS xmlns="http://blog.cripperz.sg">
<Order>
<Header>
<RARefNum>RASO000001</RARefNum>
<RARefNum>RASO000001</RARefNum>
<WMSCategory>ESSVMI</WMSCategory>
<CustomerID>nVidianVidia</CustomerID>
</Header>
</Order>
</WMS>
RASO000001
RASO000001
ESSVMI
英维迪亚
最终,我想要实现下面的XML,从SQL获取的一些数据来自一个XML嵌套/元素中的两个单独的表
<?xml version="1.0" encoding="utf-8"?>
<WMS>
<Order>
<Header>
<RARefNum>RASO000001</RARefNum>
<WMSCategory>ESSVMI</WMSCategory>
<CustomerID>nVidia</CustomerID>
<CreationDate>2013-12-02 06:29:50</CreationDate>
<OrderDate>2013-12-02 06:29:50</OrderDate>
<ExpectedShippedDate>2013-12-02 06:29:50</ExpectedShippedDate>
<LastShippedDate>2013-12-02 06:29:50</LastShippedDate>
<CustomerOrderReference>nVidia9338</CustomerOrderReference>
<CustomerShipmentNo>81475721</CustomerShipmentNo>
<CustomerSONo>SO982733</CustomerSONo>
<CustomerInvoiceNo>INV987373</CustomerInvoiceNo>
<CustomerReference1>nVidia 1</CustomerReference1>
<CustomerReference2/>
<WMSReference1>Emp 1</WMSReference1>
<WMSReference2>Emp 2</WMSReference2>
<ShipmentNo>IWU997872</ShipmentNo>
<DocumentNo>KK98764394</DocumentNo>
<Transportation>
<Mode>Freight</Mode>
<VehicleType/>
</Transportation>
<Carrier>
<ID>Fedex</ID>
<Name>Fedex SG</Name>
<Address>Changi Singapore</Address>
<Country/>
<PostalCode/>
<Contact>
<Sequence/>
<Person/>
<Email/>
<DID/>
<Handphone/>
</Contact>
</Carrier>
<Consignee>
<ID>ABC</ID>
<Name>ABC Corp</Name>
<Address>Jurong West, Singapore</Address>
<Country/>
<PostalCode/>
<Contact>
<Sequence/>
<Person/>
<Email/>
<DID/>
<Handphone/>
</Contact>
</Consignee>
<Containers/>
</Header>
<Details>
<Detail>
<LineNo>1</LineNo>
<SKU>SKU0001</SKU>
<SKUDescription>SKU 0001</SKUDescription>
<Package>50</Package>
<OrderedQty>600.000</OrderedQty>
<PickedQty>600.000</PickedQty>
<PickedDate>2013-12-02 06:35:09</PickedDate>
<ShippedQty>600.000</ShippedQty>
<ShippedDate>2013-12-02 06:35:09</ShippedDate>
<ManufactoryDate>2013-12-02 06:35:09</ManufactoryDate>
<ExpiryDate>2014-12-02 06:35:09</ExpiryDate>
<FIFODate>2013-06-02 06:35:09</FIFODate>
<CustomerLotRef1>nVidia 2093</CustomerLotRef1>
<CustomerLotRef2>nVidia 2099</CustomerLotRef2>
<LineReference1>10</LineReference1>
</Detail>
<Detail>
<LineNo>2</LineNo>
<SKU>SKU0002</SKU>
<SKUDescription>SKU 0002</SKUDescription>
<Package>50</Package>
<OrderedQty>100.000</OrderedQty>
<PickedQty>100.000</PickedQty>
<PickedDate>2013-12-02 06:35:09</PickedDate>
<ShippedQty>100.000</ShippedQty>
<ShippedDate>2013-12-02 06:35:09</ShippedDate>
<ManufactoryDate>2013-12-02 06:35:09</ManufactoryDate>
<ExpiryDate>2014-12-02 06:35:09</ExpiryDate>
<FIFODate>2013-06-02 06:35:09</FIFODate>
<CustomerLotRef1>nVidia 2193</CustomerLotRef1>
<CustomerLotRef2>nVidia 2199</CustomerLotRef2>
<LineReference1>10</LineReference1>
</Detail>
</Details>
</Order>
</WMS>
RASO000001
ESSVMI
英伟达
2013-12-02 06:29:50
2013-12-02 06:29:50
2013-12-02 06:29:50
2013-12-02 06:29:50
nVidia9338
81475721
SO982733
INV987373
英伟达1
环境管理计划1
环境管理计划2
IWU997872
KK98764394
运费
联邦快递
联邦快递股份有限公司
新加坡樟宜
基础知识
ABC公司
新加坡裕廊西
1.
SKU0001
SKU 0001
50
600
600
2013-12-02 06:35:09
600
2013-12-02 06:35:09
2013-12-02 06:35:09
2014-12-02 06:35:09
2013-06-02 06:35:09
英伟达2093
英伟达2099
10
2.
SKU0002
SKU 0002
50
100
100
2013-12-02 06:35:09
100
2013-12-02 06:35:09
2013-12-02 06:35:09
2014-12-02 06:35:09
2013-06-02 06:35:09
英伟达2193
英伟达2199
10
有更好的编码方法吗?我不知道这是否更好,但我可能会生成一些变量,而不是在xml中调用linq。然后就可以调用xml文档中的变量了 可能是这样的:
private static void CreateDatabaseXml(string path)
{
tbchrDataContext db = new tbchrDataContext();
var rARefNum = db.T_ORDER_DETAILs.Select(i => i.RARefNum).Single();
var customer = db.T_ORDER_HEADERs.Select(i => i.Customer).Single();
var supplierName = db.T_ORDER_DETAILs.Select(i => i.SupplierName).Single();
XDocument doc = new XDocument(
// XML Declaration
new XDeclaration("1.0", "utf-8", "yes"),
// XML Root element to 3rd in nest
new XElement(ns + "WMS",
new XElement(ns + "Order",
new XElement(ns + "Header", new XElement(ns + "RARefNum", rARefNum),
new XElement (ns + "WMSCategory", customer),
new XElement (ns + "CustomerID", supplierName)))) );
#endregion
doc.Save(path);
}
- 在sql server中,支持大量xml格式输出
- 此查询从两个表返回一个xml文档。也许你正在使用 linq,然后在完成sql查询后,从 林克 从table2.table1上的table1内部联接table2中选择table1.column1、table2.column2。table1_id=table1.id用于xml自动
检查。@KiroYakuza No,Programmers.SE是关于软件开发概念的,例如算法、设计模式或有关软件开发生命周期的问题。请不要在不了解的情况下推荐其他网站。@KiroYakuza:你从哪里听说的?!好吧,那么@amon,我问这个问题是在正确的地方吗?@CPython说实话,我不太确定。你想解决的问题到底是什么?如果您询问如何修改代码以获得第二个输出,那么如果没有更多详细信息,我们无法回答这个问题。如果您的代码已经按预期工作,但您希望改进代码样式等,那么您可能需要查看代码。有一个专门的网站,但我也不确定这个问题是否适合这个网站。我会叫他们三次,也许有人会帮助我们:!起来@一次就够了。如果代码有效,它会在第一眼看到的时候查看代码审查主题。