【问题标题】:How to join xml and datatable via linq如何通过 linq 加入 xml 和数据表
【发布时间】:2016-05-26 09:03:16
【问题描述】:

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

我也有如下所示的 xml,因此我需要将数据表列与 XML 属性连接,然后如果数据表列中存在属性值,则选择 XML 值。 我尝试了许多可能的方法,但没有一个有帮助。 请帮助我如何在 linq 的帮助下实现这一目标!

下面是 XML 代码

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

下面是我用过的代码sn-p

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);
}

【问题讨论】:

  • 当前输入是什么?电流输出是多少?预期的输出是什么?
  • 当前输入附加 xml 和 datatable 两列'名称和值和值与 xml 属性值相同,因此它应该检索数据中的一些值,但当前输出为空。
  • 您的代码没有问题。我已经尝试过了,它有效。可能问题出在数据表中的数据上。你能说明你是如何填充数据表的吗?
  • 出于测试目的,我只是使用下面的简单代码来创建数据表 DataTable dt=new DataTable(); dt.Columns.Add("名称"); dt.Columns.Add("值");数据行博士 = dt.NewRow();博士[“姓名”] =“埃里克”;博士[“价值”] = 9; dt.Rows.Add(dr);数据行 dr1 = dt.NewRow(); dr1["姓名"] = "KI"; dr1[“价值”] = 9; dt.Rows.Add(dr1);
  • 你的代码正在运行,它给了我{ name = Eric, value = 9 }

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


【解决方案1】:

我认为您正在尝试合并而不是加入?

将它们都转换为字典(数据库列表和 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.

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2016-01-21
    相关资源
    最近更新 更多