#83 - Utilizzare LINQ per estrarre indirizzi email validi ed errati da una lista

Capita spesso di dover lavorare con elenchi di contatti contenenti indirizzi email e fra questi ve ne sono di validi, errati o nulli. Come fare per estrapolare rapidamente solo le righe contenenti email errate oppure effettuare un ordinamento per cognome ma che rispetti il raggruppamento :
1. email corrette
2. email errate
3. email vuote

Ci sono diverse soluzioni e tutte piuttosto semplici, ma tramite LINQ e Regex tutto diventa semplicissimo.
La chiave per risolvere il problema è l'utilizzo combinato della giusta regular expression con il metodo Where di LINQ
Ipotizziamo di lavorare con una lista di oggetti Persona con property Nome, Cognome e Email.

Il primo passo è definire il pattern che discrimini fra email corrette e non:

Dim pattern As String = "^[\w\-\.]*[\w\.]\@[\w\.]*[\w\-\.]+[\w\-]+[\w]\.+[\w]+[\w $]"

A questo punto, potendo utilizzare la funzione Match della classe Regex in combinazione con il metodo Where di LINQ possiamo ottenere:

'elenco degli indirizzi email validi 
Dim l1 = From p In Contatti _ 
         Where Regex.Match(p.Email, pattern).Success _ 
         Order By p.Cognome Select p 
 
'elenco degli indirizzi email errati ma non vuoti 
Dim l2 = From p In Contatti _ 
         Where Regex.Match(p.Email, pattern).Success = False _ 
         And p.Email.Length > 0 _ 
         Order By p.Cognome Select p 
 
'elenco degli indirizzi email vuoti 
Dim l3 = From p In Contatti _ 
         Where p.Email.Length = 0 _ 
         Order By p.Cognome Select p 
 
'concatenamento degli elenco di indirizzi email validi,  
'errati e nulli ordinati al loro interno per cognome 
Dim ltot = l1.Concat(l2).Concat(l3)

E' importante comunque sottolineare che il concetto di validità di una email qui considerato è puramente sintattico e dipende dal pattern più o meno restrittivo che si utilizza all'interno della regular expression.

IL CONTENUTO
SCRIPT VIA E-MAIL

Iscriviti alle nostre newsletter unoscript@lgiorno e Xcript per ricevere gli script via e-mail.

MEDIA
IN EVIDENZA
MISC