Share via


Gewusst wie: Zurückgeben von Teilmengen von Elementeigenschaften in einer Abfrage (C#-Programmierhandbuch)

Aktualisiert: November 2007

Verwenden Sie in einem Abfrageausdruck einen anonymen Typ, wenn die beiden folgenden Bedingungen gelten:

  • Sie möchten nur einige der Eigenschaften jedes Quellelements zurückgeben.

  • Sie müssen die Abfrageergebnisse nicht außerhalb des Methodengültigkeitsbereichs speichern, in dem die Abfrage ausgeführt wurde.

Wenn Sie von jedem Quellelement nur eine Eigenschaft oder ein Feld zurückgeben möchten, können Sie dazu den Punktoperator in der select-Klausel verwenden. Um beispielsweise nur die ID von jedem student zurückzugeben, schreiben Sie die select-Klausel wie folgt:

select student.ID;

Beispiel

Das folgende Beispiel zeigt, wie Sie einen anonymen Typ verwenden können, um nur eine Teilmenge der Eigenschaften jedes Quellelements zurückzugeben, das der angegebenen Bedingung entspricht.

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 seine Eigenschaften verwendet, wenn keine Namen angegeben werden. Um den Eigenschaften im anonymen Typ neue Namen zu geben, schreiben Sie die select-Anweisung wie folgt:

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

Wenn Sie dies im vorherigen Beispiel versuchen, dann muss auch die Console.WriteLine-Anweisung geändert werden:

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

Kompilieren des Codes

  • Um diesen Code auszuführen, kopieren Sie die Klasse, und fügen Sie sie in ein Visual C#-Konsolenanwendungsprojekt ein, das in Visual Studio erstellt wurde. Dieses Projekt gilt standardmäßig für Version 3.5 von .NET Framework und hat einen Verweis auf System.Core.dll sowie eine using-Direktive für System.Linq. Wenn eine oder mehrere dieser Anforderungen im Projekt fehlen, können Sie sie manuell hinzufügen. Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines LINQ-Projekts.

Siehe auch

Konzepte

C#-Programmierhandbuch

LINQ-Abfrageausdrücke (C#-Programmierhandbuch)

Referenz

Anonyme Typen (C#-Programmierhandbuch)