title: DataGridView cell search using a LINQ query
body: <p>I'm still relatively new to LINQ, and have done more stumbling around than anything, but I have really liked what I have seen so far.  So with that in mind, I have a VB.NET search routine, part of which is provided, below, that checks all Text cells in a DataGridView for a given string (inclusive), using a basic set of nested loops to perform the search:</p>
  
  <pre><code>' 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)
  </code></pre>
  
  <p>Pretty straightforward.  Now, my question is: is there a way to replicate this behavior using LINQ?  Basically I would like the query to select (or return) the first DataGridViewCell whose text contains the search string.  I've done some tinkering with sub-queries and the like, but I'm still having trouble wrapping my brain around the concepts (too many years of writing T-SQL, I guess).  </p>
  
  <p>Obviously the nested loop works fine, so this is more of a curiosity, really.  Thanks in advance!  </p>