He estado usando LINQ por un tiempo (y lo disfruto), pero parece que toco un acelerador rápido cuando me encuentro con colecciones especializadas de .NET (DataRowCollection, ControlCollection). ¿Hay alguna manera de utilizar LINQ con estos controles especializados, y si no crees que Microsoft abordará esto en la próxima versión del framework? ¿O tenemos que iterar sobre estas formas que no son LINQ, o retirar los elementos de la colección en colecciones propias de LINQ?¿Alguna vez Microsoft hará todas las colecciones utilizables por LINQ?
Respuesta
La razón por la cual las colecciones como ControlCollection
no funcionan con LINQ es que no están fuertemente tipadas. Sin un tipo de elemento LINQ no puede crear métodos fuertemente tipados. Siempre que conozca el tipo, puede usar el método Cast
para crear una enumeración fuertemente tipada y, por lo tanto, usarla con LINQ. Por ejemplo
ControlCollection col = ...
var query = col.Cast<Control>().Where(x => ...);
Como el querer Microsoft siempre hacen estos implementan IEnumerable<T>
por defecto. Mi conjetura es no aquí. La razón de por qué es que hacerlo es un cambio radical y puede causar un comportamiento esperado en el código. Incluso la simple implementación de IEnumerable<Control>
para ControlCollection
provocaría cambios en la resolución de sobrecarga que pueden, y casi seguramente romperán, las aplicaciones del usuario.
La razón de esto es: Colecciones que no aplican IEnumerable<T>
o IQueryable, no se pueden repetir en LINQ
tiene que ser IEnumerable
Bueno, todas las colecciones implementan IEnumerable (de lo contrario, no podría recorrerlas). Pero para poder ser utilizado por linq, deberán implementar la versión genérica (IEnumerable
Mencioné la versión genérica de IEnumerable, pero SOF (Editor de texto) no me dejará hacerlo. No lo noté temprano, hice la corrección. Gracias de cualquier manera –
Usted debe ser capaz de hacer algo como esto:
myDataRowCollection.Cast<DataRow>().Where.....
y utilizar LINQ que camino. Si sabes cuáles son los objetos en la colección, entonces deberías poder usar eso.
- 1. ¿Por qué todas las entidades de Linq odian?
- 2. Comando volver a indexar todas las colecciones mongodb
- 3. Seleccionar valores distintos en todas las colecciones anidadas utilizando LINQ para objetos?
- 4. Reparar todas las tablas de una vez
- 5. Omitir listas: ¿alguna vez las usaste?
- 6. ¿Cómo encontrar nombres de todas las colecciones usando PyMongo?
- 7. Consulta de colecciones de niños en LINQ
- 8. ¿Recibió Delphi alguna vez por cada ciclo?
- 9. Cómo concatenar dos colecciones por índice en LINQ
- 10. ¿Por qué todas las colecciones base inmutables son definitivas o selladas en scala?
- 11. Eclipse: ¿cómo finalizar todas las aplicaciones a la vez?
- 12. ¿Importa todas las importaciones en eclipse a la vez?
- 13. cómo combinar una colección de colecciones en Linq
- 14. knockoutjs: cómo recibir notificaciones para todas las propiedades una vez
- 15. ¿Cómo cierro todas las pestañas abiertas a la vez?
- 16. elementos existentes en ambas colecciones usando LINQ
- 17. Seleccionar todas las columnas de todas las tablas de unirse a + LINQ unen
- 18. ORMLite - CallBatchTasks() individualmente o una vez para todas las actualizaciones?
- 19. Cómo obtengo las coordenadas utilizables de la pantalla en Delphi
- 20. Seleccione todas las columnas después de UNIR en LINQ
- 21. PHP ¿Puede un cliente establecer alguna vez las variables $ _SESSION?
- 22. ¿Por qué alguna vez usaría una DoublyLinkedList en PHP?
- 23. ¿Por qué las etiquetas son todas minúsculas?
- 24. LINQ: busque todas las casillas marcadas en un GridView
- 25. Obteniendo todas las clases internas por reflexión
- 26. ¿Alguna vez alguien usa el Control Ribbon?
- 27. ¿Es necesario > alguna vez?
- 28. ¿Alguna vez ha usado ngen.exe?
- 29. ¿Se desborda BigInteger alguna vez?
- 30. ¿Por qué alguna vez scrollTop/scrollLeft no se puede escribir?
Esa es la respuesta. Olvidé el elenco. Microsoft aún podría agregar colecciones de tipos fuertes para ControlCollection y tal. Gracias y gracias a todos los que contribuyeron. –
¿Por qué Microsoft no creó el ControlCollection como una colección fuertemente tipada (de tipo Control)? – BornToCode