Gewusst wie: Zurückgeben von Teilmengen von Elementeigenschaften in einer Abfrage (C#-Programmierhandbuch)How to: Return Subsets of Element Properties in a Query (C# Programming Guide)

Verwenden Sie einen anonymen Typ in einem Abfrageausdruck, wenn die folgenden Bedingungen beide erfüllt sind:Use an anonymous type in a query expression when both of these conditions apply:

  • Sie möchte nur manche der Eigenschaften jedes Quellelements zurückgeben.You want to return only some of the properties of each source element.

  • Sie müssen die Abfrageergebnisse nicht außerhalb des Geltungsbereichs der Methode speichern, in der die Abfrage ausgeführt wird.You do not have to store the query results outside the scope of the method in which the query is executed.

Wenn Sie nur eine Eigenschaft oder ein Feld jeder Quelldatei zurückgeben möchten, können Sie dazu den Punktoperator in der select-Klausel verwenden.If you only want to return one property or field from each source element, then you can just use the dot operator in the select clause. Wenn Sie z.B. die ID jedes student zurückgeben möchten, schreiben Sie die select-Klausel wie folgt:For example, to return only the ID of each student, write the select clause as follows:

select student.ID;  

BeispielExample

Im folgenden Beispiel erfahren Sie, wie Sie einen anonymen Typ verwenden können, um lediglich eine Teilmenge der Eigenschaften jedes Quellelements zurückzugeben, das die angegebenen Bedingungen erfüllt.The following example shows how to use an anonymous type to return only a subset of the properties of each source element that matches the specified condition.

private static void QueryByScore()
{
    // Create the query. var is required because
    // the query produces a sequence of anonymous types.
    var queryHighScores =
        from student in students
        where student.ExamScores[0] > 95
        select new { student.FirstName, student.LastName };

    // Execute the query.
    foreach (var obj in queryHighScores)
    {
        // The anonymous type's properties were not named. Therefore 
        // they have the same names as the Student properties.
        Console.WriteLine(obj.FirstName + ", " + obj.LastName);
    }
}
/* Output:
Adams, Terry
Fakhouri, Fadi
Garcia, Cesar
Omelchenko, Svetlana
Zabokritski, Eugene
*/

Beachten Sie, dass der anonyme Typ den Namen des Quellelements für dessen Eigenschaften verwendet, wenn keine Namen angegeben sind.Note that the anonymous type uses the source element's names for its properties if no names are specified. Um die Eigenschaften im anonymen Typen zu benennen, schreiben Sie die select-Anweisung wie folgt:To give new names to the properties in the anonymous type, write the select statement as follows:

select new { First = student.FirstName, Last = student.LastName };  

Wenn Sie dies mit vorherigem Beispiel durchführen möchten, müssen Sie die Console.WriteLine-Anweisung anpassen:If you try this in the previous example, then the Console.WriteLine statement must also change:

Console.WriteLine(student.First + " " + student.Last);  

Kompilieren des CodesCompiling the Code

  • Um diesen Code auszuführen, kopieren Sie die Klasse, und fügen Sie sie in ein Visual C#-Konsolenanwendungsprojekt ein, das in Visual StudioVisual Studio erstellt wurde.To run this code, copy and paste the class into a Visual C# console application project that has been created in Visual StudioVisual Studio. Standardmäßig wird dieses Projekt mit Version 3.5 von .NET Framework.NET Framework verwendet und verfügt über einen Verweis auf „System.Core.dll“ und eine using-Anweisung für „System.Linq“.By default, this project targets version 3.5 of the .NET Framework.NET Framework, and it will have a reference to System.Core.dll and a using directive for System.Linq. Wenn eine oder mehrere dieser Anforderungen im Projekt nicht vorhanden sind, können Sie sie manuell hinzufügen.If one or more of these requirements are missing from the project, you can add them manually.

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
Anonyme TypenAnonymous Types
LINQ-AbfrageausdrückeLINQ Query Expressions