filtro filtrar c# list datagrid icollectionview

filtro - filtrar datagridview c#



Convierta ICollectionView a List<T> (4)

Puedes probar:

List<Call> CallsList = CallsView.Cast<Call>().ToList();

Estoy vinculando el tipo de propiedad de ICollectionView en controles DataGrid en WPF, .NET 4.0.

Yo uso Filter en ICollectionView .

public ICollectionView CallsView { get { return _callsView; } set { _callsView = value; NotifyOfPropertyChange(() => CallsView); } } private void FilterCalls() { if (CallsView != null) { CallsView.Filter = new Predicate<object>(FilterOut); CallsView.Refresh(); } } private bool FilterOut(object item) { //.. }

Vista de ICollection Init:

IList<Call> source; CallsView = CollectionViewSource.GetDefaultView(source);

Estoy tratando de resolver este problema:

Por ejemplo, el recuento de datos fuente es de 1000 elementos. Uso filtro, en el control DataGrid muestro solo 200 elementos.

Me gustaría convertir la vista actual de ICollection en IList<Call>


¿Puedes usar un método de extensión para convertir:

IList<Call> source = collection.ToList();


Acabo de toparme con este problema en Silverlight, pero es lo mismo en WPF:

IEnumerable<call> calls = collectionViewSource.View.Cast<call>();


Como System.Component.ICollectionView no implementa IList, no puede simplemente llamar a ToList (). Al igual que Niloo ya respondió, primero debe lanzar los elementos en la vista de colección.

Puede usar el siguiente método de extensión:

/// <summary> /// Casts a System.ComponentModel.ICollectionView of as a System.Collections.Generic.List&lt;T&gt; of the specified type. /// </summary> /// <typeparam name="TResult">The type to cast the elements of <paramref name="source"/> to.</typeparam> /// <param name="source">The System.ComponentModel.ICollectionView that needs to be casted to a System.Collections.Generic.List&lt;T&gt; of the specified type.</param> /// <returns>A System.Collections.Generic.List&lt;T&gt; that contains each element of the <paramref name="source"/> /// sequence cast to the specified type.</returns> /// <exception cref="ArgumentNullException"><paramref name="source"/> is <c>null</c>.</exception> /// <exception cref="InvalidCastException">An element in the sequence cannot be cast to the type <typeparamref name="TResult"/>.</exception> [SuppressMessage("Microsoft.Design", "CA1002:DoNotExposeGenericLists", Justification = "Method is provided for convenience.")] public static List<TResult> AsList<TResult>(this ICollectionView source) { return source.Cast<TResult>().ToList(); }

Uso:

var collectionViewList = MyCollectionViewSource.View.AsList<Call>();