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 student
wilt 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.