gpt4 book ai didi

c# - 创建一个 "join"以从一个 XElement 更新另一个 XElement

转载 作者:行者123 更新时间:2023-11-30 18:04:01 25 4
gpt4 key购买 nike

我有一个名为“XUsers”的 XElement,它将包含如下所示的 XML:

<users>
<user id="12345" name="Bob Smith" />
<user id="67890" name="Jamal Stevens" />
<user id="54321" name="Mary Jones" />
</users>

...还有另一个 XElement,称为“XTasks”,它将包含如下数据:

<tasks>
<task id="1" title="Task 1" ownerId="54321" />
<task id="2" title="Task 2" ownerId="12345" />
<task id="3" title="Task 3" ownerId="67890" />
</tasks>

我想向第二个 XElement (XTasks) 中的任务元素添加一个属性(“ownerName”),并根据与第一个 XElement (XUsers) 的“连接”设置其值。因此,我的最终结果将是 XTask 中的 XML 如下所示:

<tasks>
<task id="1" title="Task 1" ownerId="54321" ownerName="Mary Jones" />
<task id="2" title="Task 2" ownerId="12345" ownerName="Bob Smith" />
<task id="3" title="Task 3" ownerId="67890" ownerName="Jamal Stevens" />
</tasks>

这可以使用 Linq 吗?我无法在网络上找到此类操作的任何示例。在我的 ASP.NET(C#) 代码中实现此目的的最有效方法是什么?

感谢您提供的任何建议。

最佳答案

我在没有任何 IDE 的情况下执行此操作,所以请原谅我的任何错误..

 foreach (XElement task in XTasks.Elements())
{
XElement userNode = XUsers.Elements().Where(
e => e.Attribute("id").Value == task.Attribute("ownerId").Value).FirstOrDefault();
if (userNode != null)
{
task.Attribute("ownerName").SetValue(userNode.name);
}
}

关于c# - 创建一个 "join"以从一个 XElement 更新另一个 XElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com