Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

LINQ: work-around per il metodo Last in LINQ-to-SQL

In un vecchio post parlammo dei metodi extension Last e LastOrDefault, dicendo che permettono di ottenere l'ultimo elemento di una sequenza che soddisfi la condizione specificata e che, però, non sono supportati in LINQ-to-SQL.

Oggi vediamo un possibile work-around. In primo luogo, creiamo un nuovo progetto, eseguiamo la connessione al database (nell'esempio proposto, il famoso Northwind) e aggiungiamo una classe LINQ-to-SQL al progetto, chiamata Northwind.dbml. Quando il designer OR/M è attivo, trascinate la tabella Customers su di esso dalla finestra Esplora Server.

Quindi, ipotizziamo di voler conoscere l'ultimo dei clienti tra quelli che risiedono nella città di Londra. Negli altri provider LINQ potremmo utilizzare il metodo extension Last, oppure LastOrDefault (che, nel caso in cui non ci siano elementi che soddisfano la condizione, restituisce Nothing invece di sollevare una InvalidOperationException). Come possiamo fare? lavorando al contrario.

Ordiniamo l'elenco dei customer in modo descrescente in base alla città, quindi recuperiamo il primo elemento della sequenza tramite metodo First o FirstOrDefault. Tutto questo lungo discorso si traduce nel seguente codice:

    Private northwindContext As New NorthwindDataContext

 

    Private Function MyLast() As Customers

 

        Return (From cliente In northwindContext.Customers _

                Order By cliente.City Descending _

                Select cliente).FirstOrDefault(Function(c) c.City = "London")

     End Function

Tengo a precisare che questa è "una" tecnica e non "la" tecnica. Però può tornare utile a qualcuno.

Alessandro

Print | posted on venerdì 11 luglio 2008 22:16 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET