registro query buscar c# datatable

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 + "%''");