Je suis encore relativement nouveau à LINQ, et j'ai fait plus de trébucher que tout, mais j'ai vraiment aimé ce que j'ai vu jusqu'ici. Donc, dans cet esprit, j'ai une routine de recherche VB.NET, dont une partie est fournie ci-dessous, qui vérifie toutes les cellules Text dans un DataGridView pour une chaîne donnée (inclusive), en utilisant un ensemble de boucles imbriquées de base pour effectuer la recherche :Recherche de cellules DataGridView à l'aide d'une requête LINQ
' Search for the first occurrence of the given string
For Each row As DataGridViewRow In dgvMembers.Rows
' Skip the new row
If row.IsNewRow Then Exit For
' Loop through all the cells in the current row
For Each cell As DataGridViewCell In row.Cells
' Skip non-text cells
If cell.GetType IsNot GetType(DataGridViewTextBoxCell) Then Continue For
' Search for our matching text
If cell.Value.ToString.ToUpper.Contains(searchText) Then
' Select the cell if we have a match
dgvMembers.CurrentCell = cell
WriteMessage("String '{0}' found.", searchText)
Exit Sub
End If
Next
Next
' If we get to this point, we didn't find anything
WriteMessage("String '{0}' NOT found.", searchText)
Assez simple. Maintenant, ma question est: existe-t-il un moyen de répliquer ce comportement en utilisant LINQ? Fondamentalement, je voudrais que la requête sélectionne (ou retourne) le premier DataGridViewCell dont le texte contient la chaîne de recherche. J'ai fait quelques bricolages avec des sous-requêtes et autres, mais j'ai toujours du mal à envelopper mon cerveau autour des concepts (trop d'années à écrire du T-SQL, je suppose).
Évidemment, la boucle imbriquée fonctionne très bien, c'est donc plus une curiosité, vraiment. Merci d'avance!
Wow, c'est tellement ... élégant. :-) N'a même pas * penser * à interroger à partir de 2 choses à la fois. Je n'ai pas encore eu l'occasion de l'implémenter, mais ça a l'air génial. +1 pour la simplicité! Je vais l'essayer et vous laisser savoir comment cela fonctionne. Merci! –
Cela a très bien fonctionné. Juste dû ajouter un bloc Try ... Catch à gérer lorsque la ligne est une nouvelle ligne (impossible de la filtrer dans la clause Where car nous la référons comme si elle contenait déjà des données dans la clause From), mais à part ça, c'était parfait. Merci encore!!!! –
Mon plaisir, heureux que cela a fonctionné pour vous :) – knslyr