[C#] Collection-Elemente durch Methodenaufruf verändern
Heute benötigte ich eine Methode, um jedes Element einer generischen Collection des Typs ICollection<MeineKlasse> in eine andere zu überführen. In meinem Fall wollte ich als Ergebnis einfach eine neue Collection<string> haben.
Die Einzelelemente konnten durch einfachen Aufruf der Methode ToString() überführt werden. Allerdings habe ich in .NET 3.5 keine solche Methode gefunden, daher habe ich selbst eine Extension Method geschrieben:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.Specialized; using Microsoft.SharePoint; using System.Collections; namespace MyMethods { public static class FieldHelper { public static ICollection<U> CreateCollectionFromMethodInvoke<T, U>(this ICollection<T> collection, Func<T, U> method) { foreach (T element in collection) { result.Add(method(element)); } return result; } } }
Verwendung
Mit folgendem Aufruf kann diese Extension Method verwendet werden:
foreach (string s in liste.CreateCollectionFromMethodInvole(i => i.ToString())) { Console.WriteLine(s); }