2016-05-26 7 views
1

У меня есть datatable, который держит два столбца как «Имя» и «Значение».Как присоединиться к xml и datatable через linq

У меня есть xml, который выглядит ниже, поэтому мне нужно присоединиться к столбцу данных с атрибутом XML, а затем выбрать значение 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); 
} 
+0

Каков текущий вход? Каков текущий выход? И каков ожидаемый результат? –

+0

Текущие входы присоединены xml и datatable с двумя столбцами «Имя и значение и значение такие же, как значение атрибута xml, поэтому в соответствии с этим он должен получить некоторое значение в данных, но текущий вывод равен NULL. – Akhilesh

+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.