c# - query - Encuentra un valor en DataTable
filter datatable c# (4)
AFAIK, no hay nada integrado para buscar todas las columnas. Puede usar Find
solo contra la clave principal. Select
necesidades de columnas especificadas. Quizás puedas usar LINQ, pero en última instancia esto solo hace el mismo bucle. ¿Tal vez simplemente desenrolló usted mismo? Será legible, al menos.
¿Hay una manera de encontrar un valor en DataTable en C # sin hacer una operación fila por fila?
El valor puede ser una parte de (una subcadena de la fila [columnName] .value, separada por comas) una celda en el datatable y el valor puede estar presente en cualquiera de las columnas en la fila.
Esta pregunta fue hecha en 2009, pero quiero compartir mis códigos:
Public Function RowSearch(ByVal dttable As DataTable, ByVal searchcolumns As String()) As DataTable
Dim x As Integer
Dim y As Integer
Dim bln As Boolean
Dim dttable2 As New DataTable
For x = 0 To dttable.Columns.Count - 1
dttable2.Columns.Add(dttable.Columns(x).ColumnName)
Next
For x = 0 To dttable.Rows.Count - 1
For y = 0 To searchcolumns.Length - 1
If String.IsNullOrEmpty(searchcolumns(y)) = False Then
If searchcolumns(y) = CStr(dttable.Rows(x)(y + 1) & "") & "" Then
bln = True
Else
bln = False
Exit For
End If
End If
Next
If bln = True Then
dttable2.Rows.Add(dttable.Rows(x).ItemArray)
End If
Next
Return dttable2
End Function
Quizás puedas filtrar filas por posibles columnas como esta:
DataRow[] filteredRows =
datatable.Select(string.Format("{0} LIKE ''%{1}%''", columnName, value));
Un objeto DataTable o DataSet tendrá un método de selección que devolverá una matriz de resultados de DataRow en función de la consulta pasada como parámetro.
Teniendo en cuenta sus necesidades, su expresión de filtro tendrá que ser un tanto general para que esto funcione.
myDataTable.Select("columnName1 like ''%" + value + "%''");