Pregunta

Tengo el siguiente código:

ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"

El DataTable.Select() método devuelve una matriz de System.Data.DataRow objetos.

No importa lo que especifique en el ListBox.DisplayMember propiedad, todo lo que veo es el ListBox con el número correcto de elementos, todos mostrados como System.Data.DataRow en lugar del valor que quiero que está en el "name" ¡columna!

¿Es posible unirse a la matriz resultante desde DataTable.Select(), en lugar de recorrerlo y agregar cada uno al ListBox?

(¡No tengo ningún problema con los bucles, pero no parece un final elegante!)

¿Fue útil?

Solución

Usar una Vista de datos en cambio.

ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"

Otros consejos

Josh lo tiene claro con DataView.Si necesita un martillo muy grande, puede tomar la matriz de filas de cualquier DataTable.Select("...") y fusionarla en un DataSet diferente.


 DataSet copy = new DataSet();
 copy.Merge(myDataTable.Select("Foo='Bar'"));
 // copy.Tables[0] has a clone

Ese enfoque para lo que estás tratando de hacer probablemente sea excesivo, pero hay casos en los que es posible que necesites obtener una tabla de datos de una serie de filas donde sea útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top