ich mit dem Inhalt einer XML-Datei haben:Kreuz verbinden über Linq XML und Linq Objekte Listen
<?xml version="1.0" encoding="utf-8" ?>
<packages>
<package productnumber="123">
<stpos>
<pid>345</pid>
<vat>10</vat>
</stpos>
<stpos>
<pid>678</pid>
<vat>20</vat>
</stpos>
</package>
<package productnumber="246">
<stpos>
<pid>81012</pid>
<vat>5</vat>
</stpos>
<stpos>
<pid>141618</pid>
<vat>2</vat>
</stpos>
</package>
</packages>
dann Liste Ich habe immer noch ein Produkt:
var productList = new List<Product>
{
new Product {ProductNumber = "123" },
new Product {ProductNumber = "345" },
new Product {ProductNumber = "678" },
new Product {ProductNumber = "246" },
new Product {ProductNumber = "81012" },
new Product {ProductNumber = "Nothing" },
};
Ich möchte, dass für die Prüfung jedes Paket s productnumber and its pid
s existiert in der Produktliste. Wenn es wahr ist, dann gebe das Paket zurück.
In meinem Beispiel oben:
Ich möchte Rückholpaket mit Produktnummer 123, da alle drei Produktnummern in der Produktliste vorhanden sind.
Das Paket mit Produktnummer 246 nicht weil nur 2 Produktnummern enthalten sind, in der Produktliste zurückgegeben werden soll, „Nichts“ nicht enthalten ist ...
Das ist meine Frage:
var doc = XDocument.Load("./packages.xml");
var query = (from package in doc.Descendants("packages").Elements()
from p in productList
where p.ProductNumber == package.Attribute("productnumber").Value &&
productList.All(p =>
package.Descendants("stpos").Select(x => x.Element("pid").Value).Contains(p.ProductNumber))
select package).ToList();
Mein query.Count() ist 0 und ich verstehe nicht warum.
Kann jemand meine Augen öffnen bitte :-)
Aber 345 und 678, die die PIDs innerhalb 123 sind, nicht enthalten sind in 'productList' – octavioccl
Das war ein Tippfehler, den ich jetzt korrigiert habe! Es funktioniert immer noch nicht! Graf ist immer noch NULL! Ich denke auch, dass mein Cross beitreten - wie ich es im Moment benutze - ist nicht korrekt ;-) – Elisabeth