Enumerable.OfType<TResult>, méthode

Filtre les éléments d'un IEnumerable en fonction du type spécifié.

Espace de noms :  System.Linq
Assembly :  System.Core (dans System.Core.dll)

public static IEnumerable<TResult> OfType<TResult>(
	this IEnumerable source
)

Paramètres de type

TResult

Type en fonction duquel filtrer les éléments de la séquence.

Paramètres

source
Type : System.Collections.IEnumerable
IEnumerable dont les éléments doivent être filtrés.

Valeur de retour

Type : System.Collections.Generic.IEnumerable<TResult>
IEnumerable<T> qui contient des éléments de la séquence d'entrée de type TResult.

Remarque sur l'utilisation

En Visual Basic et C#, vous pouvez appeler cette méthode comme une méthode d'instance sur n'importe quel objet de type IEnumerable. Lorsque vous utilisez la syntaxe des méthodes d'instance pour appeler cette méthode, omettez le premier paramètre. Pour plus d'informations, consultez Méthodes d'extension (Visual Basic) ou Méthodes d'extension (Guide de programmation C#).

ExceptionCondition
ArgumentNullException

source a la valeur null.

Cette méthode est implémentée par exécution différée. La valeur de retour immédiate est un objet qui stocke toutes les informations requises pour réaliser l'action. La requête représentée par cette méthode n'est pas exécutée tant que l'objet n'est pas énuméré, soit par l'appel de sa méthode GetEnumerator directement, soit à l'aide de foreach dans Visual C# ou de For Each dans Visual Basic.

La méthode OfType<TResult>(IEnumerable) retourne uniquement les éléments de source qui peuvent être castés en type TResult. Pour recevoir une exception à la place si un élément ne peut pas être casté en type TResult, utilisez Cast<TResult>(IEnumerable).

Cette méthode est l'une des rares méthodes d'opérateur de requête standard pouvant être appliquées à une collection dont le type est non paramétré, telle qu'une ArrayList. Cela s'explique par le fait que OfType<TResult> étend le type IEnumerable. OfType<TResult> peut être appliqué non seulement aux collections basées sur le type IEnumerable<T> paramétrable, mais également aux collections basées sur le type IEnumerable non paramétrable.

En appliquant OfType<TResult> à une collection qui implémente IEnumerable, vous obtenez la possibilité d'interroger la collection à l'aide des opérateurs de requête standard. Par exemple, si vous spécifiez un argument de type Object pour OfType<TResult>, un objet de type IEnumerable<Object> en C# ou IEnumerable(Of Object) dans Visual Basic sera retourné et vous pourrez alors appliquer à ce dernier les opérateurs de requête standard.

L'exemple de code suivant montre comment utiliser OfType<TResult> pour filtrer les éléments d'un IEnumerable.


            System.Collections.ArrayList fruits = new System.Collections.ArrayList(4);
            fruits.Add("Mango");
            fruits.Add("Orange");
            fruits.Add("Apple");
            fruits.Add(3.0);
            fruits.Add("Banana");

            // Apply OfType() to the ArrayList.
            IEnumerable<string> query1 = fruits.OfType<string>();

            Console.WriteLine("Elements of type 'string' are:");
            foreach (string fruit in query1)
            {
                Console.WriteLine(fruit);
            }

            // The following query shows that the standard query operators such as 
            // Where() can be applied to the ArrayList type after calling OfType().
            IEnumerable<string> query2 =
                fruits.OfType<string>().Where(fruit => fruit.ToLower().Contains("n"));

            Console.WriteLine("\nThe following strings contain 'n':");
            foreach (string fruit in query2)
            {
                Console.WriteLine(fruit);
            }

            // This code produces the following output:
            //
            // Elements of type 'string' are:
            // Mango
            // Orange
            // Apple
            // Banana
            //
            // The following strings contain 'n':
            // Mango
            // Orange
            // Banana



.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications du Windows Store

Pris en charge dans : Windows 8

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft