PDA

View Full Version : [.Net]LinQ e Regex


RaouL_BennetH
16-09-2012, 19:22
Buonasera :)

Il mio codice :



var result = from a in context.PIPPO
from b in a.PAPERINO
from c in b.QUIQUOQUA
select new
{
Number = a.INDIRIZZO,
//blablabla
};


Avrei bisogno di estrarre da 'a.INDIRIZZO' soltanto il numero compreso, quindi, per es.: via topolinia 26 -> 26

Ho provato a fare nel modo più semplice ma non ci sono riuscito:


select new
{
Number = int.Parse(Regex.Match(a.INDIRIZZO, @"\d+").Value),
blablabla
};


Come errore mi restituisce che int.Parse non è riconosciuto da LinQ.

Grazie !!!

tomminno
16-09-2012, 21:32
Linq2Sql viene tradotto in query Sql. Non mi risulta che esistano le Regex in Sql Server...
Mentre con Linq2Object non c'è problema, quindi secondo me ti conviene prima eseguire la query tramite Linq2Sql e poi usare la regex con Linq2Object.

Ah un consiglio, cerca di utilizzare il costrutto join la tua query è altamente inefficiente.

RaouL_BennetH
16-09-2012, 22:09
Linq2Sql viene tradotto in query Sql. Non mi risulta che esistano le Regex in Sql Server...
Mentre con Linq2Object non c'è problema, quindi secondo me ti conviene prima eseguire la query tramite Linq2Sql e poi usare la regex con Linq2Object.

Ah un consiglio, cerca di utilizzare il costrutto join la tua query è altamente inefficiente.

Grazie mille per la dritta sulla Join !
Come posso fare un confronto fra 'prima e dopo' ?

Per quanto riguarda invece il quesito del 3d, ho risolto cambiando tipo di lista come AsEnumerable().

tomminno
17-09-2012, 10:20
Grazie mille per la dritta sulla Join !
Come posso fare un confronto fra 'prima e dopo' ?


http://www.linqpad.net/


Per quanto riguarda invece il quesito del 3d, ho risolto cambiando tipo di lista come AsEnumerable().

Occhio a come usi AsEnumerable. Rischi di leggere a diritto l'intera tabella...

Kralizek
17-09-2012, 10:39
Occhio a come usi AsEnumerable. Rischi di leggere a diritto l'intera tabella...

esatto! mettiti in un enumerable la tua query "filtrata" ed "ordinata" con i dati spuri con L2Sql e poi con L2Objects li raffini ;)