seleccionar - obtener un valor de un dataset c#
Seleccionar el segundo conjunto de 20 filas de DataTable (2)
Tengo una DataTable Estoy poblando de la tabla SQL con las siguientes columnas de ejemplo
- CARNÉ DE IDENTIDAD
- Tipo
- Valor
Estoy rellenando DataTable con filas que son de cierto tipo. Quiero seleccionar las filas 10 a 20 de mi DataTable resultante:
Connect conn = new Connect();
SqlDataAdapter da = new SqlDataAdapter(SQL, conn.Connection());
//Creates data
DataTable d = new DataTable();
da.Fill(d);
DataRow[] result = d.Select();
En el código anterior he omitido el SQL principal, y actualmente no tengo seleccionado para mi matriz DataRow. No puedo encontrar una manera de hacer referencia a los números de fila.
Entonces, por ejemplo, estoy buscando algo como Select("rownum > X && rownum < Y")
He buscado aquí, y una cantidad de otros recursos sin resultado. Cualquier pista sería realmente útil, o simplemente una simple no posible.
Siempre es mejor seleccionar solo lo que necesita de la base de datos (fe utilizando la cláusula TOP
o una función de ventana como ROW_NUMBER
) en lugar de filtrarla en la memoria.
Sin embargo, puede usar Linq-To-DataSet
y Enumerable.Skip
+ Enumerable.Take
:
var rows = d.AsEnumerable()
.Skip(9).Take(11); // select rows 10-20 as desired (so you want 11 rows)
Si desea una nueva DataTable
del resultado filtrado, use CopyToDataTable
, si desea una DataRow[]
use rows.ToArray()
.
Simplemente haría el comando ''tomar'' y ''omitir'' y mantenerlo simple:
d.Select().Skip(10).Take(10); // skips 10 rows, then selects ten after that.
Esto supondría que tiene el conjunto de uso de Linq (utilizando System.Linq)