Hola, no se si te sirva pero yo tengo algo parecido en unos programas que hice y lo manejo de la siguiente manera, lleno el Grid con todos los datos que tengo en la Bd, ejemplo articulos, y con una funcion que hice hago una busqueda dentro del mismo grid, no se si te sirva o a lo mejor haciendole algunos cambios puedes adaptarlo a lo que necesitas, te dejo la funcion.
Código VB.NET:
Ver originalPublic Function Buscar(ByVal TextoABuscar As String, ByVal Columna As String, ByRef grid As DataGridView) As Boolean
Dim encontrado As Boolean = False
If TextoABuscar = String.Empty Then Return False
If grid.RowCount = 0 Then Return False
grid.ClearSelection()
If Columna = String.Empty Then
For Each row As DataGridViewRow In grid.Rows
For Each cell As DataGridViewCell In row.Cells
If cell.Value.ToString() = TextoABuscar Then
row.Selected = True
Return True
End If
Next
Next
Else
For Each row As DataGridViewRow In grid.Rows
If row.IsNewRow Then Return False
If row.Cells(Columna).Value.ToString() = TextoABuscar Then
row.Selected = True
Return True
End If
Next
End If
Return encontrado
End Function