Vorgehensweise: Steuern des Typs einer Projektion (C#)How to: Control the Type of a Projection (C#)

Bei einer Projektion wird ein Satz von Daten gefiltert und in der Form und sogar im Typ geändert.Projection is the process of taking one set of data, filtering it, changing its shape, and even changing its type. Die meisten Abfrageausdrücke führen Projektionen aus.Most query expressions perform projections. Bei den meisten Abfrageausdrücken in diesem Abschnitt ist das Ergebnis der Auswertung eine IEnumerable<T> von XElement, aber Sie können festlegen, welcher Projektionstyp verwendet werden soll, um Auflistungen eines anderen Typs zu erstellen.Most of the query expressions shown in this section evaluate to IEnumerable<T> of XElement, but you can control the type of the projection to create collections of other types. In diesem Thema wird gezeigt, wie Sie dazu vorgehen müssen.This topic shows how to do this.

BeispielExample

Das folgende Beispiel definiert einen neuen Typ: Customer.The following example defines a new type, Customer. Der Abfrageausdruck instanziiert dann in der Customer-Klausel neue Select-Objekte.The query expression then instantiates new Customer objects in the Select clause. Damit ist der Typ des Abfrageausdrucks eine IEnumerable<T> von Customer.This causes the type of the query expression to be IEnumerable<T> of Customer.

In diesem Beispiel wird das folgende XML-Dokument verwendet: Beispiel-XML-Datei: Kunden und Bestellungen (LINQ to XML).This example uses the following XML document: Sample XML File: Customers and Orders (LINQ to XML).

public class Customer  
{  
    private string customerID;  
    public string CustomerID{ get{return customerID;} set{customerID = value;}}  

    private string companyName;  
    public string CompanyName{ get{return companyName;} set{companyName = value;}}  

    private string contactName;  
    public string ContactName { get{return contactName;} set{contactName = value;}}  

    public Customer(string customerID, string companyName, string contactName)  
    {  
        CustomerID = customerID;  
        CompanyName = companyName;  
        ContactName = contactName;  
    }  

    public override string ToString()  
    {  
        return String.Format("{0}:{1}:{2}", this.customerID, this.companyName, this.contactName);  
    }  
}  

class Program  
{  
    static void Main(string[] args)  
    {  
        XElement custOrd = XElement.Load("CustomersOrders.xml");  
        IEnumerable<Customer> custList =  
            from el in custOrd.Element("Customers").Elements("Customer")  
            select new Customer(  
                (string)el.Attribute("CustomerID"),  
                (string)el.Element("CompanyName"),  
                (string)el.Element("ContactName")  
            );  
        foreach (Customer cust in custList)  
            Console.WriteLine(cust);  
    }  
}  

Dieser Code erzeugt die folgende Ausgabe:This code produces the following output:

GREAL:Great Lakes Food Market:Howard Snyder  
HUNGC:Hungry Coyote Import Store:Yoshi Latimer  
LAZYK:Lazy K Kountry Store:John Steel  
LETSS:Let's Stop N Shop:Jaime Yorres  

Siehe auchSee Also

Select
Projektionen und Transformationen (LINQ to XML) (C#)Projections and Transformations (LINQ to XML) (C#)