如何通过linq连接xml和datatable

时间:2016-05-26 09:03:16

标签: c# linq linq-to-xml linq-to-dataset

我有一个数据表,其中包含两列“名称”和“值”。

我的xml也如下所示,所以我需要将datatable列与XML属性连接,然后选择XML Value,如果属性值存在于datatable列中。  我尝试了很多方法,但没有一个帮助过。    请帮助我如何在linq的帮助下实现这一目标!

下面是XML代码

<Serverlist>
    <server name='Eric' value='9' />
    <server name='Donot' value='92' />
</Serverlist>

以下是我使用的代码段

XElement xelement = XElement.Load("path");

var data = from dtt in dt.AsEnumerable()
           join xele in xelement.Descendants("server")
           on (string)dtt.Field<string>("Name") equals (string)xele.Attribute("name")
           select new { name =(String) xele.Attribute("name"), value=(string) xele.Attribute("value")};

foreach(var v in data) 
{
    Console.WriteLine(v);
}

1 个答案:

答案 0 :(得分:0)

我认为你试图合并而不是加入?

将它们转换为字典(数据库列表和xml文档)。然后将两个词典合并在一起。好的例子在this thread。例如:

dictionaryFrom.ToList().ForEach(x => dictionaryTo.Add(x.Key, x.Value));
Simple and easy. According to this blog post it's even faster than most loops.