2 Stimmen

Type Constraint für foreach mit LINQ-Erweiterungen

Ich habe irgendwo hier auf SO eine Methode gesehen, um Elemente, die von einer foreach-Schleife zurückgegeben werden, auf einen bestimmten Typ zu beschränken, wobei, wenn ich mich richtig erinnere, LINQ-Erweiterungen auf IEnumerable und ein Lambda für die Typprüfung verwendet werden. Ich kann es nicht wieder finden, kann jemand vorschlagen, wie dies erreicht wurde?

8voto

laktak Punkte 52075

Suchen Sie das?

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

3voto

Charlie Flowers Punkte 17000

Sie könnten dies mit einem Aufruf der Erweiterungsmethode Where wie folgt tun:

foreach(var x in theCollection.Where(i => i.GetType() == typeof(DesiredType))
{
     // Do something to x
}

Diese Funktion ist jedoch so nützlich, dass sie in das .NET-Framework integriert ist, worauf Chris oben hinweist. IEnumerable hat eine Erweiterungsmethode namens OfType, dokumentiert aquí .

Um sie zu verwenden, müssen Sie etwa so vorgehen:

foreach(var x in theCollection.OfType<int>())
{
     // Do something to x
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X