Per ottenere la riga selezionata di una DataGridView, in LINQ-to-SQL è necessario eseguire delle operazioni diverse rispetto all'utilizzo dei Dataset. E' possibile sfruttare, ad esempio, un'espressione lambda.
Considerate il seguente snippet, che potremmo aggiungere come codice del gestore dell'evento CurrentChanged del controllo BindingSource associato alla DataGridView:
'Ottiene la riga corrente
Dim ID As Integer = DirectCast(DataGridView1.SelectedRows(0).Cells("IDCliente").Value, Integer)
Dim CurrentCustomer As Customers = NorthwindDataContext.Orders.First(Function(p) p.CustomerID = ID)
Ipotizzando di avere l'applicazione connessa al database Northwind e di voler conoscere il valore della cella che contiene l'ID cliente contenuto nella riga selezionata, in primo luogo otteniamo il valore della cella (SelectedRows(0)) relativa alla colonna degli ID clienti (Cells("IDCliente")). Poichè questo restituisce Object, la DirectCast ci permette di convertire tale valore in Integer. Già questo è sufficiente per ottenere le informazioni sulla riga selezionata.
L'espressione lambda successiva, invece, ci consente di ottenere tutte le informazioni sul cliente appartenente a quella riga, mediante il metodo extension First.
Se volete, potete scaricare il code snippet per Visual Studio 2008, installabile tramite pacchetto .Vsi, da questo link:
Alessandro