Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过linq连接xml和datatable_C#_Linq_Linq To Xml_Linq To Dataset - Fatal编程技术网

C# 如何通过linq连接xml和datatable

C# 如何通过linq连接xml和datatable,c#,linq,linq-to-xml,linq-to-dataset,C#,Linq,Linq To Xml,Linq To Dataset,我有一个datatable,它包含两列“Name”和“Value” 我还有如下所示的xml,所以我需要用xml属性连接datatable列,然后如果datatable列中存在属性值,则选择xml值。 我尝试了许多可能的方法,但没有一种有效。 请帮助我如何在linq的帮助下实现这一点 下面是XML代码 <Serverlist> <server name='Eric' value='9' /> <server name='Donot' value='92

我有一个datatable,它包含两列“Name”和“Value”

我还有如下所示的xml,所以我需要用xml属性连接datatable列,然后如果datatable列中存在属性值,则选择xml值。 我尝试了许多可能的方法,但没有一种有效。 请帮助我如何在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);
}
XElement-XElement=XElement.Load(“路径”);
var数据=来自dt.AsEnumerable()中的dtt
在xelement.substands(“服务器”)中加入xele
在(字符串)dtt.Field(“名称”)上等于(字符串)xele.Attribute(“名称”)
选择新的{name=(String)xele.Attribute(“name”),value=(String)xele.Attribute(“value”)};
foreach(数据中的var v)
{
控制台写入线(v);
}

我想你是想合并而不是加入

将它们转换为字典(数据库列表和xml文档)。然后把这两本词典合并在一起。这方面有很好的例子。例如:

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.

我想你是想合并而不是加入

将它们转换为字典(数据库列表和xml文档)。然后把这两本词典合并在一起。这方面有很好的例子。例如:

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.

当前输入是什么?电流输出是多少?预期的输出是什么?当前输入是附加的xml和datatable,具有两个列的名称和值,并且值与xml属性值相同,因此它应该检索数据中的一些值,但当前输出为空。代码没有问题。我试过了,效果很好。可能问题在于数据表中的数据。您能展示一下如何填充数据表吗?出于测试目的,我刚才使用了下面的简单代码来创建数据表DataTable dt=newdatatable();dt.列。添加(“名称”);dt.列。添加(“值”);DataRow dr=dt.NewRow();dr[“Name”]=“Eric”;dr[“值”]=9;dt.Rows.Add(dr);DataRow dr1=dt.NewRow();dr1[“名称”]=“KI”;dr1[“值”]=9;dt.行。添加(dr1);您的代码正在运行,它给了我
{name=Eric,value=9}
当前的输入是什么?电流输出是多少?预期的输出是什么?当前输入是附加的xml和datatable,具有两个列的名称和值,并且值与xml属性值相同,因此它应该检索数据中的一些值,但当前输出为空。代码没有问题。我试过了,效果很好。可能问题在于数据表中的数据。您能展示一下如何填充数据表吗?出于测试目的,我刚才使用了下面的简单代码来创建数据表DataTable dt=newdatatable();dt.列。添加(“名称”);dt.列。添加(“值”);DataRow dr=dt.NewRow();dr[“Name”]=“Eric”;dr[“值”]=9;dt.Rows.Add(dr);DataRow dr1=dt.NewRow();dr1[“名称”]=“KI”;dr1[“值”]=9;dt.行。添加(dr1);您的代码正在运行,它给了我
{name=Eric,value=9}