En mi aplicación WPF me gustaría utilizar LINQ tanto como sea posible (especialmente para evitar foreach
). Pero WPF trabaja mucho con ObservableCollection, y no puedo usar LINQ con este tipo de colección. ¿Que puedo hacer?WPF LINQ y ObservableCollection
Respuesta
¿Qué le hace pensar que no puede usar LINQ con ObservableCollection<T>
? Implementa Collection<T>
por lo que debería estar bien.
Por ejemplo:
using System;
using System.Collections.ObjectModel;
using System.Linq;
class Test
{
static void Main()
{
var collection = new ObservableCollection<int>()
{
1, 2, 3, 6, 8, 2, 4, 5, 3
};
var query = collection.Where(x => x % 2 == 0);
foreach (int x in query)
{
Console.WriteLine(x);
}
}
}
Sólo por cualquier otra persona que puede venir a través de este problema con tratar de filtrar una ObservableCollection pero descubren que no pueden.
Jon tiene toda la razón en que no hay ninguna razón por la que no puedas hacer esto, pero la clave para un novato o alguien que ha estado desarrollando con WPF por un tiempo es que debes incluir el "utilizando System.Linq; " espacio de nombres. Tan pronto como hagas esto, puedes hacer una consulta ".where" en tu objeto.
Esto es cierto, y funcionó para mí. – dev1998
¡Gracias por la respuesta adicional! * Ese * fue mi problema :) – derekantrican
El ObservableCollection resultante no se actualizará si la actualización del resultado de la consulta es consecuencia de la fuente subyacente que se está actualizando. – Tormod
El OP pidió especialmente el método LINQ ".ForEach()", que no se puede usar en ObservableCollection < T>, ya que está implementado para la Lista < T> solamente.
Hay otro SO-Tema, donde encontré mi solución: https://stackoverflow.com/a/200584/2408978
- 1. Resultado Cast LINQ para ObservableCollection
- 2. Aumento del rendimiento ObservableCollection WPF
- 3. ObservableCollection obligatorio para WPF ListBox
- 4. Encuadernación WPF Canvas Children a una ObservableCollection
- 5. forzando la validación; WPF, DataGrid, ObservableCollection
- 6. Uso de HashSets con ObservableCollection con WPF
- 7. ObservableCollection y CollectionChanged Evento
- 8. Invertir un ObservableCollection <objectType> usando linq
- 9. diferencia entre ObservableCollection y BindingList
- 10. WPF TreeView vinculado a ObservableCollection no actualiza los nodos raíz
- 11. WPF ObservableCollection <T> vs BindingList <T>
- 12. Serialización de Data-Bound ObservableCollection en WPF (PropertyChangedEventManager)
- 13. XMLSerialize un ObservableCollection
- 14. Merged ObservableCollection
- 15. Clasificación ObservableCollection
- 16. cómo ordenar ObservableCollection
- 17. ObservableCollection tutorial?
- 18. ObservableCollection (Of T) vs BindingList (Of T)?
- 19. ObservableCollection como DependencyProperty
- 20. ObservableCollection Rendimiento de enlace de datos
- 21. Actualizar un ObservableCollection de otro hilo
- 22. ObservableCollection and threading
- 23. C# - convertir el tipo anónimo en observablecollection
- 24. ObservableCollection <> vs. List <>
- 25. ¿Por qué ObservableCollection no admite cambios masivos?
- 26. LINQ "MaxOrDefault"?
- 27. Actualización asincrónica de los elementos de ObservableCollection
- 28. ObservableCollection no se actualiza View
- 29. WPF: ¿cómo puedo implementar un ObservableCollection <K,T> con una clave (como un diccionario)?
- 30. Conseguir un WPF ListView para mostrar ObservableCollection <T> usando enlace de datos
Gracias. Lo siento. Recuerdo que había problemas con algunas consultas, pero ahora lo he intentado y todo funciona. – lamarmora
La consulta resultante es un IEnumerable. ¿Hay una forma clara de volver a un ObservableCollection? –
tofutim
@tofutim: No, hasta donde sé, me temo. –