Encontre um valor em DataTable

Existe uma maneira de encontrar um valor em DataTable em C # sem fazer a operação linha por linha?

O valor pode ser uma parte de (uma subseqüência de linha [columnName] .value, separada por vírgula) uma célula na tabela de dados e o valor pode estar presente em qualquer uma das colunas na linha.

Um object DataTable ou DataSet terá um método Select que retornará uma matriz DataRow de resultados com base na consulta passada como parâmetro.

Olhando para sua exigência, sua expressão de filtro terá que ser um pouco geral para fazer isso funcionar.

myDataTable.Select("columnName1 like '%" + value + "%'"); 

Talvez você possa filtrar linhas por colunas possíveis assim:

 DataRow[] filteredRows = datatable.Select(string.Format("{0} LIKE '%{1}%'", columnName, value)); 

AFAIK, não há nada embutido para pesquisar todas as colunas. Você pode usar Find somente na chave primária. Select necessidades de colunas especificadas. Você pode, talvez, usar o LINQ, mas no final isso faz o mesmo looping. Talvez apenas desenrole você mesmo? Vai ser legível, pelo menos.

esta pergunta feita em 2009, mas eu quero compartilhar meus 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