我有XML實例比較使用名稱標籤XML節點值和刪除標記
<order>
<orderItem>
<OrderId>Ex1</OrderId>
<amount>100</amount>
</orderItem>
<orderItem>
<OrderId>Ex2</OrderId>
<amount>150</amount>
</orderItem>
<orderItem>
<OrderId>Ex1</OrderId>
<amount>250</amount>
</orderItem>
</order>
如果將訂單標記值等於另一個的OrderId標記值然後添加量標籤和刪除新添加的標籤。
結果輸出我需要應該像下面
<order>
<orderItem>
<OrderId>Ex1</OrderId>
<amount>350</amount>
</orderItem>
<orderItem>
<OrderId>Ex2</OrderId>
<amount>150</amount>
</orderItem>
</order>
將訂單值應該改變。
string filename = "File Location";
var doc = XDocument.Load(filename);
var results = doc.Descendants("order");
var orderItemcount = results.Descendants("orderItem").Count();
我不知道接下來要做什麼。
在此先感謝。
UPDATE:
我的新XML像下面
<order>
<orderItem>
<Orders>
<OrderId>Ex1</OrderId>
<amount>100</amount>
</Orders>
</orderItem>
<orderItem>
<Orders>
<OrderId>Ex2</OrderId>
<amount>150</amount>
</Orders>
</orderItem>
<orderItem>
<Orders>
<OrderId>Ex1</OrderId>
<amount>250</amount>
</Orders>
</orderItem>
</order>
如果將訂單一樣那麼OrderItem的標籤添加到匹配的標籤。 結果我需要像下面
<order>
<orderItem>
<Orders>
<OrderId>Ex1</OrderId>
<amount>100</amount>
</Orders>
<Orders>
<OrderId>Ex1</OrderId>
<amount>250</amount>
</orderItem>
<orderItem>
<Orders>
<OrderId>Ex2</OrderId>
<amount>150</amount>
<Orders>
</orderItem>
</order>
更新應答
var groups = doc.Descendants("order").Descendants("orderItem").Descendants("Orders")
.GroupBy(x => (string)x.Element("OrderId"))
.ToList();
XElement newXml = new XElement("order");
foreach (var group in groups)
{
newXml.Add(new XElement("OrderList", new object[] {
// new XAttribute("OrderId", group.Key), // If you Need Key for Attribute add this.
group
}));
}
簡稱組你'orderItems'通過'OrderId'並總結'金額' –