2016-05-26 4 views
1

Ich habe eine Datentabelle, die zwei Spalten als "Name" und "Wert" enthält.Wie man Xml und Datatable über Linq verbindet

Ich habe auch XML, die wie folgt aussieht, so dass ich datatable Spalte mit XML-Attribut verbinden müssen, dann wählen Sie XML-Wert, wenn Attributwert in Datentabelle Spalte vorhanden sind. Ich habe viele Möglichkeiten ausprobiert, aber keiner von ihnen hat geholfen. Bitte helfen Sie mir, dies mit Hilfe von linq zu erreichen!

Im Folgenden finden Sie XML-Code

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

Below Code-Schnipsel, die ich

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

Was ist der aktuelle Eingang? Was ist der aktuelle Ausgang? Und was ist der erwartete Output? –

+0

aktuelle Eingaben sind Xml und Datentabelle mit zwei Spalten 'Name und Wert und Wert sind die gleichen wie Xml-Attribut Wert, so dass es einige Wert in Daten abrufen sollte, aber aktuelle Ausgabe ist Null. – Akhilesh

+0

Es ist nichts falsch mit Ihrem Code. Ich habe es ausprobiert und es funktioniert. Vielleicht ist das Problem mit den Daten in der Datentabelle. Können Sie zeigen, wie Sie die Datentabelle auffüllen? –

Antwort

0

verwendet haben, ich glaube, Sie versuchen, im Gegensatz zu fusionieren zu verbinden?

Konvertieren Sie beide in Wörterbücher (die Datenbankliste und das XML-Dokument). Dann füge die beiden Wörterbücher zusammen. Gute Beispiele sind in this thread. zum Beispiel:

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.