Share via


Subsets van elementeigenschappen in een query retourneren (C#-programmeerhandleiding)

Gebruik een anoniem type in een query-expressie wanneer beide voorwaarden van toepassing zijn:

  • U wilt slechts enkele eigenschappen van elk bronelement retourneren.

  • U hoeft de queryresultaten niet op te slaan buiten het bereik van de methode waarin de query wordt uitgevoerd.

Als u slechts één eigenschap of veld van elk bronelement wilt retourneren, kunt u gewoon de puntoperator in de select component gebruiken. Als u bijvoorbeeld alleen de ID van beide studentwilt retourneren, schrijft u de select component als volgt:

select student.ID;  

Opmerking

In het volgende voorbeeld ziet u hoe u een anoniem type gebruikt om alleen een subset van de eigenschappen van elk bronelement te retourneren dat overeenkomt met de opgegeven voorwaarde.

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
*/

Houd er rekening mee dat het anonieme type de namen van het bronelement gebruikt voor de eigenschappen als er geen namen zijn opgegeven. Als u nieuwe namen wilt geven aan de eigenschappen in het anonieme type, schrijft u de select instructie als volgt:

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

Als u dit in het vorige voorbeeld probeert, moet de Console.WriteLine instructie ook het volgende wijzigen:

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

De code compileren

Als u deze code wilt uitvoeren, kopieert en plakt u de klasse in een C#-consoletoepassing met een using instructie voor System.Linq.

Zie ook