Vorgehensweise: Suchen nach einer Union von zwei Speicherorten (XPath-LINQ to XML) (C#)How to: Find a Union of Two Location Paths (XPath-LINQ to XML) (C#)

Mit XPath können Sie nach der Union der Ergebnisse zweier XPath-Speicherortpfade suchen.XPath allows you to find the union of the results of two XPath location paths.

Der XPath-Ausdruck lautet:The XPath expression is:

//Category|//Price

Die gleichen Ergebnisse können Sie mit dem Concat-Standardabfrageoperator erzielen.You can achieve the same results by using the Concat standard query operator.

BeispielExample

Dieses Beispiel sucht nach allen Category-Elementen und nach allen Price-Elementen und verkettet diese in einer einzelnen Auflistung.This example finds all of the Category elements and all of the Price elements, and concatenates them into a single collection. Beachten Sie, dass die LINQ to XML-Abfrage zum Sortieren der Ergebnisse InDocumentOrder aufruft.Note that the LINQ to XML query calls InDocumentOrder to order the results. Die Reihenfolge der Ergebnisse der XPath-Ausdrucksauswertung entspricht der Reihenfolge im Dokument.The results of the XPath expression evaluation are also in document order.

In diesem Beispiel wird das folgende XML-Dokument verwendet: Beispiel-XML-Datei: Numerische Daten (LINQ to XML).This example uses the following XML document: Sample XML File: Numerical Data (LINQ to XML).

XDocument data = XDocument.Load("Data.xml");  

// LINQ to XML query  
IEnumerable<XElement> list1 =  
    data  
    .Descendants("Category")  
    .Concat(  
        data  
        .Descendants("Price")  
    )  
    .InDocumentOrder();  

// XPath expression  
IEnumerable<XElement> list2 = data.XPathSelectElements("//Category|//Price");  

if (list1.Count() == list2.Count() &&  
        list1.Intersect(list2).Count() == list1.Count())  
    Console.WriteLine("Results are identical");  
else  
    Console.WriteLine("Results differ");  
foreach (XElement el in list1)  
    Console.WriteLine(el);  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

Results are identical  
<Category>A</Category>  
<Price>24.50</Price>  
<Category>B</Category>  
<Price>89.99</Price>  
<Category>A</Category>  
<Price>4.95</Price>  
<Category>A</Category>  
<Price>66.00</Price>  
<Category>B</Category>  
<Price>.99</Price>  
<Category>A</Category>  
<Price>29.00</Price>  
<Category>B</Category>  
<Price>6.99</Price>  

Siehe auchSee Also

LINQ to XML für XPath-Benutzer (C#)LINQ to XML for XPath Users (C#)