Hola,
Según lo que entiendo es que en el CF Framework, no han implementado la operación select para el tipo EnumerableRowCollection. Yo programo actualmente en C#, y por lo menos a mi, me da un error si no le pongo select a la sentencia LINQ. El ejemplo de lo que sí le funciona, está para VB y en ella no incluye la operación select :
Yo querría hacer algo así:
EnumerableRowCollection
<
DataRow> query =
from p
in base1DataSet.LineaFactura
where p.id > 0 select p;
Y lo que en el enlace aparece para resolver el problema es :
Dim selectedRows = From order In NorthwindDataSet.Orders _
Where order.Ship_Country = "UK"
OrdersBindingSource.DataSource = selectedRows.AsDataView()
Me sorprende ver una sentencia LINQ sin select ... pero si a él le funciona ... igual es una de las "optimizaciones" del compilador VB respecto a C#.
Mi objetivo es acercar lo devuelto por LINQ al enlace de controles, para minimizar la copia de datos y generación de clases nuevas, pero mi única alternativa es utilizar la sentencia .CopyToDataTable() ... y tras eso puedo enlazarlo a un DataGrid, por ejemplo, y que el grid acepte el Mapeado por el tipo de tabla. Puede que descrito sea más complicado que un código de ejemplo ( Así que lo pongo más abajo ) ... si busco alternativas es porque intuyo un exceso de consumo de recursos en el proceso ... creo que será menos óptimo que usar los miembros de las tablas de los dataset.
DataTable
tabla = (from linea in base1DataSet.LineaFactura where linea.id > 2 select linea).CopyToDataTable();
tabla.TableName = "LineaFactura";
this.lineaFacturaBindingSource.DataSource = tabla;
this.dataGrid1.DataSource = lineaFacturaBindingSource;
Espero no haber liado las cosas más. El dataGrid1 se supone que ya tiene un estilo asignado, con las columnas que yo quiero que aparezcan. Yo podría enlazar directamente el grid al resultado LINQ, pero el problema es que no tengo capacidad de formatear las columnas ... escoge un estilo genérico. Por ello doy nombre a la tabla.
Me preocupa que vayan a haber diferentes copias de los mismos registros en la memoria. Con los Dataset, tenía esto controlado, teniendo un solo dataset, que incluía todas las tablas, que rellenaba al principio, y luego lo que hacía era aplicar filtros en todos los casos que recuerdo, ya que no necesitaba crear diferentes vistas de las mismas tablas. Así conseguía velocidad : Siempre trabajaba en modo desconectado, atacando al dataset, porque no tenía que crear registros básicamente ... sólo consultar datos.
Gracias por tu respuesta.