我有一个名为“XUsers”的XElement,它将包含如下所示的XML:
<users>
<user id="12345" name="Bob Smith" />
<user id="67890" name="Jamal Stevens" />
<user id="54321" name="Mary Jones" />
</users>
...和另一个名为“XTasks”的XElement,它将包含如下数据:
<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)的“join”设置其值。所以,我的最终结果是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#)代码中实现此目的的最有效方法是什么?
感谢您提供任何建议。
答案 0 :(得分:1)
我这样做没有任何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);
}
}