120 votes

Comment convertir IEnumerable en ObservableCollection ?

Comment convertir IEnumerable à ObservableCollection ?

192voto

Scott Chamberlain Points 32782

Conformément à la MSDN

var myObservableCollection = new ObservableCollection(myIEnumerable);

Cela fera une copie superficielle de l'IEnumerable actuel et le transformera en ObservableCollection.

70voto

Elisha Points 11999

1) Si vous travaillez avec des produits non génériques. IEnumerable vous pouvez le faire de cette façon :

public ObservableCollection<object> Convert(IEnumerable original)
{
    return new ObservableCollection<object>(original.Cast<object>());
}

2) Si vous travaillez avec des produits génériques IEnumerable<T> vous pouvez le faire de cette façon :

public ObservableCollection<T> Convert<T>(IEnumerable<T> original)
{
    return new ObservableCollection<T>(original);
}

3) Si vous travaillez avec des produits non génériques. IEnumerable mais connaître le type d'éléments, vous pouvez le faire de cette façon :

public ObservableCollection<T> Convert<T>(IEnumerable original)
{
    return new ObservableCollection<T>(original.Cast<T>());
}

28voto

markwilde Points 520

Pour rendre les choses encore plus simples, vous pouvez créer un fichier Extension de cette méthode.

public static class Extensions
{
    public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> col)
    {
        return new ObservableCollection<T>(col);
    }
}

Ensuite, vous pouvez appeler la méthode sur chaque IEnumerable

var lst = new List<object>().ToObservableCollection();

3voto

Sudharshan Points 1

ObservableCollection distinctPkgIdList=new ObservableCollection() ; guPackgIds.Distinct().ToList().ForEach(i => distinctPkgIdList.Add(i)) ;

// distinctPkgIdList - ObservableCollection // guPackgIds.Distinct() - IEnumerable

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X