Partilhar via


Como: Um projeto novo tipo (LINQ te o XML)

Outros exemplos nesta seção mostraram consultas que os resultados de retorno como IEnumerable de XElement, IEnumerable de string, e IEnumerable de int. Esses são tipos comuns de resultado, mas não são adequados para cada cenário. Em muitos casos você desejará suas consultas para retornar IEnumerable de qualquer outro tipo.

Exemplo

Este exemplo mostra como instanciar objetos na cláusula select . O código define primeiro uma nova classe com um construtor, e altera a declaração de select de modo que a expressão é uma nova instância da nova classe.

Este exemplo usa o seguinte documento XML: Arquivo XML de exemplo: ordem de compra típica (LINQ to XML).

class NameQty {
    public string name;
    public int qty;
    public NameQty(string n, int q)
    {
        name = n;
        qty = q;
    }
};

class Program {
    public static void Main() {
        XElement po = XElement.Load("PurchaseOrder.xml");

        IEnumerable<NameQty> nqList =
            from n in po.Descendants("Item")
            select new NameQty(
                    (string)n.Element("ProductName"),
                    (int)n.Element("Quantity")
                );

        foreach (NameQty n in nqList)
            Console.WriteLine(n.name + ":" + n.qty);
    }
}
Public Class NameQty
    Public name As String
    Public qty As Integer
    Public Sub New(ByVal n As String, ByVal q As Integer)
        name = n
        qty = q
    End Sub
End Class

Public Class Program
    Shared Sub Main()
        Dim po As XElement = XElement.Load("PurchaseOrder.xml")

        Dim nqList As IEnumerable(Of NameQty) = _
            From n In po...<Item> _
            Select New NameQty( _
                n.<ProductName>.Value, CInt(n.<Quantity>.Value))

        For Each n As NameQty In nqList
            Console.WriteLine(n.name & ":" & n.qty)
        Next
    End Sub
End Class

Este exemplo usa o método de M:System.Xml.Linq.XElement.Element que foi introduzido no tópico Como recuperar um único elemento filho (LINQ to XML). Também usa conversões para recuperar os valores dos elementos que são retornados pelo método de M:System.Xml.Linq.XElement.Element .

Este exemplo gera a seguinte saída:

Lawnmower:1
Baby Monitor:2

Consulte também

Conceitos

Projeções e transformações a LINQ (XML)