Extensions.Ancestors Yöntem

Tanım

Kaynak koleksiyondaki her düğümün üst öğelerini içeren bir öğe koleksiyonu döndürür.

Aşırı Yüklemeler

Ancestors<T>(IEnumerable<T>)

Kaynak koleksiyondaki her düğümün üst öğelerini içeren bir öğe koleksiyonu döndürür.

Ancestors<T>(IEnumerable<T>, XName)

Kaynak koleksiyondaki her düğümün üst öğelerini içeren filtrelenmiş bir öğe koleksiyonu döndürür. Yalnızca eşleştirmesi XName olan öğeler koleksiyona dahil edilir.

Açıklamalar

Kaynak koleksiyondaki birden çok düğüm aynı ata sahipse, alt düğüm sonuç koleksiyonuna birden çok kez eklenir. Bunu önlemek için yöntemini kullanın Distinct .

Bu yöntem ertelenmiş yürütmeyi kullanır.

Ancestors<T>(IEnumerable<T>)

Kaynak:
Extensions.cs
Kaynak:
Extensions.cs
Kaynak:
Extensions.cs

Kaynak koleksiyondaki her düğümün üst öğelerini içeren bir öğe koleksiyonu döndürür.

C#
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Ancestors<T> (this System.Collections.Generic.IEnumerable<T> source) where T : System.Xml.Linq.XNode;
C#
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Ancestors<T> (this System.Collections.Generic.IEnumerable<T?> source) where T : System.Xml.Linq.XNode;

Tür Parametreleri

T

içindeki nesnelerinin sourcetürü ile kısıtlanır XNode.

Parametreler

source
IEnumerable<T>

XNode Kaynak IEnumerable<T> koleksiyonu içeren bir.

Döndürülenler

XElement Kaynak IEnumerable<T> koleksiyondaki her düğümün atalarını içeren bir.

Örnekler

Aşağıdaki örnek, büyük torun öğelerinin bir koleksiyonunu alır. Daha sonra koleksiyondaki tüm öğelerin tüm üst öğelerini almak için bu eksen yöntemini kullanır.

C#
XElement xmlTree = new XElement("Root",  
    new XElement("Child1",  
        new XElement("GrandChild1",  
            new XElement("GreatGrandChild1", "content")  
        )  
    ),  
    new XElement("Child2",  
        new XElement("GrandChild2",  
            new XElement("GreatGrandChild2", "content")  
        )  
    )  
);  
IEnumerable<XElement> greatGrandChildren =  
    from el in xmlTree.Descendants()  
    where el.Name.LocalName.StartsWith("Great")  
    select el;  

Console.WriteLine("Great Grand Children Elements");  
Console.WriteLine("----");  
foreach (XElement de in greatGrandChildren)  
    Console.WriteLine(de.Name);  

IEnumerable<XElement> allAncestors =  
    from el in greatGrandChildren.Ancestors().Distinct()  
    select el;  

Console.WriteLine("");  
Console.WriteLine("Ancestors");  
Console.WriteLine("----");  
foreach (XElement de in allAncestors)  
    Console.WriteLine(de.Name);  

Bu örnek aşağıdaki çıkışı oluşturur:

Great Grand Children Elements  
----  
GreatGrandChild1  
GreatGrandChild2  

Ancestors  
----  
GrandChild1  
Child1  
Root  
GrandChild2  
Child2  

Aşağıda da aynı örnek verilmiştir, ancak bu örnekte XML bir ad alanındadır. Daha fazla bilgi için bkz . XML Ad Alanlarıyla Çalışma.

C#
XNamespace aw = "http://www.adventure-works.com";  
XElement xmlTree = new XElement(aw + "Root",  
    new XElement(aw + "Child1",  
        new XElement(aw + "GrandChild1",  
            new XElement(aw + "GreatGrandChild1", "content")  
        )  
    ),  
    new XElement(aw + "Child2",  
        new XElement(aw + "GrandChild2",  
            new XElement(aw + "GreatGrandChild2", "content")  
        )  
    )  
);  
IEnumerable<XElement> greatGrandChildren =  
    from el in xmlTree.Descendants()  
    where el.Name.LocalName.StartsWith("Great")  
    select el;  

Console.WriteLine("Great Grand Children Elements");  
Console.WriteLine("----");  
foreach (XElement de in greatGrandChildren)  
    Console.WriteLine(de.Name);  

IEnumerable<XElement> allAncestors =  
    from el in greatGrandChildren.Ancestors().Distinct()  
    select el;  

Console.WriteLine("");  
Console.WriteLine("Ancestors");  
Console.WriteLine("----");  
foreach (XElement de in allAncestors)  
    Console.WriteLine(de.Name);  

Bu örnek aşağıdaki çıkışı oluşturur:

Great Grand Children Elements  
----  
{http://www.adventure-works.com}GreatGrandChild1  
{http://www.adventure-works.com}GreatGrandChild2  

Ancestors  
----  
{http://www.adventure-works.com}GrandChild1  
{http://www.adventure-works.com}Child1  
{http://www.adventure-works.com}Root  
{http://www.adventure-works.com}GrandChild2  
{http://www.adventure-works.com}Child2  

Açıklamalar

Kaynak koleksiyondaki birden çok düğüm aynı ata sahipse, alt düğüm sonuç koleksiyonuna birden çok kez eklenir. Bunu önlemek için yöntemini kullanın Distinct .

Bu yöntem ertelenmiş yürütmeyi kullanır.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Ancestors<T>(IEnumerable<T>, XName)

Kaynak:
Extensions.cs
Kaynak:
Extensions.cs
Kaynak:
Extensions.cs

Kaynak koleksiyondaki her düğümün üst öğelerini içeren filtrelenmiş bir öğe koleksiyonu döndürür. Yalnızca eşleştirmesi XName olan öğeler koleksiyona dahil edilir.

C#
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Ancestors<T> (this System.Collections.Generic.IEnumerable<T> source, System.Xml.Linq.XName name) where T : System.Xml.Linq.XNode;
C#
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Ancestors<T> (this System.Collections.Generic.IEnumerable<T?> source, System.Xml.Linq.XName? name) where T : System.Xml.Linq.XNode;

Tür Parametreleri

T

içindeki nesnelerinin sourcetürü ile kısıtlanır XNode.

Parametreler

source
IEnumerable<T>

XNode Kaynak IEnumerable<T> koleksiyonu içeren bir.

name
XName

Eşleştirecek XName .

Döndürülenler

XElement Kaynak IEnumerable<T> koleksiyondaki her düğümün atalarını içeren bir. Yalnızca eşleştirmesi XName olan öğeler koleksiyona dahil edilir.

Örnekler

Aşağıdaki örnek, büyük torun öğelerinin bir koleksiyonunu alır. Ardından, belirtilen XNamebir ile eşleşen koleksiyondaki tüm öğelerin tüm üst öğelerini almak için bu eksen yöntemini kullanır.

C#
XElement xmlTree = new XElement("Root",  
    new XElement("Child1",  
        new XElement("GrandChild1",  
            new XElement("GreatGrandChild1", "content")  
        )  
    ),  
    new XElement("Child2",  
        new XElement("GrandChild2",  
            new XElement("GreatGrandChild2", "content")  
        )  
    )  
);  
IEnumerable<XElement> greatGrandChildren =  
    from el in xmlTree.Descendants()  
    where el.Name.LocalName.StartsWith("Great")  
    select el;  

Console.WriteLine("Great Grand Children Elements");  
Console.WriteLine("----");  
foreach (XElement de in greatGrandChildren)  
    Console.WriteLine(de.Name);  

IEnumerable<XElement> allAncestors =  
    from el in greatGrandChildren.Ancestors("Child1")  
    select el;  

Console.WriteLine("");  
Console.WriteLine("Ancestors");  
Console.WriteLine("----");  
foreach (XElement de in allAncestors)  
    Console.WriteLine(de.Name);  

Bu örnek aşağıdaki çıkışı oluşturur:

Great Grand Children Elements  
----  
GreatGrandChild1  
GreatGrandChild2  

Ancestors  
----  
Child1  

Aşağıda da aynı örnek verilmiştir, ancak bu örnekte XML bir ad alanındadır. Daha fazla bilgi için bkz . XML Ad Alanlarıyla Çalışma.

C#
XNamespace aw = "http://www.adventure-works.com";  
XElement xmlTree = new XElement(aw + "Root",  
    new XElement(aw + "Child1",  
        new XElement(aw + "GrandChild1",  
            new XElement(aw + "GreatGrandChild1", "content")  
        )  
    ),  
    new XElement(aw + "Child2",  
        new XElement(aw + "GrandChild2",  
            new XElement(aw + "GreatGrandChild2", "content")  
        )  
    )  
);  
IEnumerable<XElement> greatGrandChildren =  
    from el in xmlTree.Descendants()  
    where el.Name.LocalName.StartsWith("Great")  
    select el;  

Console.WriteLine("Great Grand Children Elements");  
Console.WriteLine("----");  
foreach (XElement de in greatGrandChildren)  
    Console.WriteLine(de.Name);  

IEnumerable<XElement> allAncestors =  
    from el in greatGrandChildren.Ancestors(aw + "Child1")  
    select el;  

Console.WriteLine("");  
Console.WriteLine("Ancestors");  
Console.WriteLine("----");  
foreach (XElement de in allAncestors)  
    Console.WriteLine(de.Name);  

Bu örnek aşağıdaki çıkışı oluşturur:

Great Grand Children Elements  
----  
{http://www.adventure-works.com}GreatGrandChild1  
{http://www.adventure-works.com}GreatGrandChild2  

Ancestors  
----  
{http://www.adventure-works.com}Child1  

Açıklamalar

Kaynak koleksiyondaki birden çok düğüm eşleşen XNamebir ataya sahipse, atası sonuç koleksiyonuna birden çok kez eklenir.

Bu yöntem ertelenmiş yürütmeyi kullanır.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0