Comment retourner des sous-ensembles de propriétés d’éléments dans une requête (Guide de programmation C#)

Utilisez un type anonyme dans une expression de requête lorsque les deux conditions suivantes s’appliquent :

  • Vous souhaitez retourner uniquement certaines propriétés de chaque élément source.

  • Vous n’avez pas besoin de stocker les résultats de requête en dehors de la portée de la méthode dans laquelle la requête est exécutée.

Si vous souhaitez uniquement retourner une propriété ou un champ de chaque élément source, vous pouvez utiliser l’opérateur point dans la clause select. Par exemple, pour retourner uniquement l’ID de chaque student, écrivez la clause select de la façon suivante :

select student.ID;  

Exemple

L’exemple suivant montre comment utiliser un type anonyme pour retourner uniquement un sous-ensemble des propriétés de chaque élément source qui répond à la condition spécifiée.

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

Notez que le type anonyme utilise les noms de l’élément source pour ses propriétés si aucun nom n’est spécifié. Pour attribuer de nouveaux noms aux propriétés du type anonyme, écrivez l’instruction select de la façon suivante :

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

Si vous effectuez cette opération dans l’exemple précédent, l’instruction Console.WriteLine doit également changer :

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

Compilation du code

Pour exécuter ce code, copiez et collez la classe dans une application console C# avec une directive using pour System.Linq.

Voir aussi