Blog
Nützliche LINQ Extensions - Enum2List, List2ObservableCollection
Hier ein paar allgemeine brauchbare Extensions:
Enum2List Extension
Konvertiert einen Enum Typ in eine Liste. Die orginale Methode habe ich von dieser Seite entnommen. Ich habe ledeglich den this Parameter hinzufügen müssen.
public static List<T> EnumToList<T>(this List<T> t) { Type enumType = typeof(T); if (enumType.BaseType.Equals(typeof(Enum))) return new List<T>(); Array enumValArray = Enum.GetValues(enumType); List<T> enumValList = new List<T>(enumValArray.Length); foreach (int val in enumValArray) enumValList.Add((T)Enum.Parse(enumType, val.ToString())); return enumValList; }Den Enum kann man wie folgt in eine Liste konvertieren.
List<EnumType> m = new List<EnumType>().EnumToList();List2ObservableCollection Extension
Wenn man mit WPF arbeitet sind ObservableCollections von Vorteil. Wenn man eine Linq Abfrage macht gibt es nur die Möglichkeit das Ergebnis in eine Liste zu speichern. Mit folgendem Code kann man eine Collection in eine ObservableCollection umwandeln.
public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> collection) { ObservableCollection<T> observableCollection = new ObservableCollection<T>(); foreach (var x in collection) { observableCollection.Add(x); } return observableCollection; }Rekursion in Linq
Ist oder kann eine Klasse wie ein Baum aufgebaut werden, muss man das Objekt rekursiv durchlaufen, um alle Werte zu erhalten. Mit einer Extension kann man auch mit Linq Bäume durchsuchen.
Siehe dazu folgende Seite: http://mutable.net/blog/archive/2008/05/23/using-linq-to-objects-for-recursion.aspx
NotifyPropertyChanged Extension
Properties welche die NotifyPropertyChanged Funktion aufrufen übergeben normalerweise den Propertienamen als einen hardcoded string. Das ist nicht nur unschön sondern auch lästig, wenn man ein Refactoring durchführt.
Folgende Extension schafft abhilfe:
public static string GetMemberName<TEntity, TProperty>(this TEntity instance, Expression<Func<TEntity, TProperty>> projection)
{
return ((MemberExpression)projection.Body).Member.Name;
}
{
return ((MemberExpression)projection.Body).Member.Name;
}
Sie wird wie folgt angewendet:
private object _Propertyname; public object Propertyname { get { return _Propertyname; } set { _Propertyname = value; NotifyPropertyChanged(this.GetMemberName(x => x.Propertyname)); } }
Schlüsselwörter: LINQ, C#, List2ObservableCollection, Enum2List
zuletzt geändert: 31. Mai 2009 19:25
Link zu diesem Artikel: (in die Zwischenablage)
(c) 2011 | Impressum |
| Empfehlenswerte Blog Einträgebaska.jpg)