Ricerca 
it-ITen-US
Registrazione
Accedi
In-Vesti Dotnetwork
IN-VESTI DNW!!!
Sono finalmente arrivate le nuovissime T-Shirt di DotNetWork!!! Con soli 15,00 € ci sosterrai nelle spese di gestione della Community e ti invieremo a casa una splendida maglietta.
Se vuoi contribuire al mantenimento di DotNetWork.it Vai sulla pagina Iscrizioni
Effettua il pagamento usando IWBank
Click per andare alla pagina di Iscrizione
Oppure un Bonifico bancario (le coordinate sono sulla pagina Iscrizioni), inviaci una mail a support@dotnetwork.it indicandoci la tua taglia e l'indirizzo di spedizione.  Non appena verificata la ricezione del pagamento provvederemo a spedirti la tua T-Shirt.  Le magliette sono disponibili nelle taglie S-M-L-XL-XXL (in caso di esaurimento di una delle taglie, indica quella di "Backup"). Grazie per IN-VESTIRTI con NOI!!!
.:DotNetWork Founders:.
    Stampa     


DotNetWork Forums
[vb2008] Linq e inferenza
Ultimo Post 05 mag 2010 09.59 by Hidden. 4 Risposte.
Stampa immediata
Ordina:
PrevPrev ProssimoProssimo
Non sei autorizzato ad inviare una risposta.
Autore Messaggi

Posts:663

--
04 mag 2010 12.00  
Allora ho notato un qualcosa che non so spiegarmi e non sapendo come cercare una spiegazione provo a chiedere a voi.

Ho creato una query con l'utilizzo di linq con il seguente codice

Dim query = From a In MioDataSet.dtAltro _
                    Where a.SOCIETA = "Azienda"

l'inferenza mi dichiara query come tipo System.Data.EnumerableRowCollection(OFMioProgetto.MioDataSet.dtAltroRow)
 
pertanto io con query ho il metodo CopyToTable che mi consente di copiare il risultato della query in una datatable.


Mentre con quest'altra query

Dim query = From t In MioDataSet.dtAltro _
                    Group t By t.MATRIC, t.DATA, t.DALLE_ORE,  t.ALLE_ORE, t.MININT, t.SOCIETA, t.ORELAVORO Into Group _
                    Select MATRIC, DATA, DALLE_ORE, ALLE_ORE, MININT, SOCIETA, ORELAVORO

dichiara query com tipo 

System.Collections.Generic.IEnumerable(OF 'tipo anonimo' ) e di conseguenza perdo alcuni dei vantaggi che avevo con la prima query. Come mai accade questo?
E' normale ho sono io a commettere qualche errore?
Come posso rimediare?

Grazie per il vostro supporto ed il vostro permanente aiuto.
Grazie

Posts:657

--
04 mag 2010 16.04  
Nel primo caso ti stai facendo ritornare effettivamente degli oggetti del tuo tipo.
Nel secondo caso gli hai detto di tornarti un oggetto anonimo del tipo "Select MATRIC, DATA, DALLE_ORE, ALLE_ORE, MININT, SOCIETA, ORELAVORO "

Quindi togli la parte SELECT finale, in modo che hai come risultato delle collezioni di raggruppamenti; segli la collezione che ti interessa e che conterrà gli oggetti del tuo tipo e sei apposto.

Non so se mi sono spiegato bene, prova!
Rudy Azzan

Posts:663

--
05 mag 2010 06.50  
Grazie Rudy.
Allora la prima parte è molto chiara.
Quello che però non ho capito è la seconda cioè

Quindi togli la parte SELECT finale, in modo che hai come risultato delle collezioni di raggruppamenti; segli la collezione che ti interessa e che conterrà gli oggetti del tuo tipo e sei apposto.


Ho capito di togliere la select finale, ma come faccio a scegliere la collezione che mi interessa.
Devo fare per caso una conversione con CYtpe ?

Posts:657

--
05 mag 2010 09.47  
Inserito da Hidden su 05 mag 2010 07.50
Grazie Rudy.
Allora la prima parte è molto chiara.
Quello che però non ho capito è la seconda cioè

Quindi togli la parte SELECT finale, in modo che hai come risultato delle collezioni di raggruppamenti; segli la collezione che ti interessa e che conterrà gli oggetti del tuo tipo e sei apposto.


Ho capito di togliere la select finale, ma come faccio a scegliere la collezione che mi interessa.
Devo fare per caso una conversione con CYtpe ?
Premetto che io non uso mai la nuova sintassi per eseguire query nel codice, perchè secondo me aiuta a non capire niente di cosa stiamo facendo. Quindi faccio solamente query via lambda e in C#, e ragiono sugli oggetti. Nel tuo caso sarebbe una cosa del genere:

//Ottendo un gruppo di tipi anonimi basato sul tipo di
//"MioProgetto.MioDataSet.dtAltroRow" della
//System.Data.EnumerableRowCollection su cui opero:

var raggruppamento = MioDataSet.dtAltro.GroupBy(t => new { t.MATRIC, t.DATA, t.DALLE_ORE, t.ALLE_ORE, t.MININT, t.SOCIETA, t.ORELAVORO })

//Ogni gruppo contiente una serie di dati del tuo tipo
//"MioProgetto.MioDataSet.dtAltroRow"

foreach (var gruppo in raggruppamento)
{
   //System.Data.EnumerableRowCollection di oggetti
   //del tipo "MioProgetto.MioDataSet.dtAltroRow"   
   var rows = gruppo.Select(t => t);

   //Adesso puoi usare CopyToTable
}

Dimmi o no se così non è più chiaro e si capisce cosa si stà facendo
Rudy Azzan

Posts:663

--
05 mag 2010 09.59  
Diciamo che in parte mi è chiaro, però per maggiore precisione provo a dirti quello che ho capito.

Fai la query di raggruppamento senza includere il SELECT il quale ti restituisce comunqe un gruppo di tipi anonimi basato si dtAltro

dopo ciò con il ciclo for gli dico che per ogni gruppo presente in raggruppamento mi deve fare il SELECT (solo mi è poco chiaro il significato di (t =>t) comunque)

alla fine del ciclo otterò rows riepito con i gruppi che mi interessano e su rows potrò utilizzare il metodo CopyToTable.

Se le cose stanno così allora penso di aver capito, anche se dovrò fare qualche prova per fissare bene nella mia mente il concetto.

Grazie
Non sei autorizzato ad inviare una risposta.

Active Forums 4.1
       
Articoli
Panoramica del Sistema dei Comandi
Come iniziare a capire com'è fatto WPF (parte 5)
2007/09/30 | Autore: Patrizia Cosolo
Assembly Strong Named
Firma digitale degli Assembly, uso e funzionalità
2007/08/05 | Autore: Sabrina Cosolo
Miniguida alla OOP con il .NET Framework- Parte IV
Come gestire l'ereditarietà
2009/07/17 | Autore: Alberto De Luca
Installer Utility - Utilizzare le Azioni Personalizzate
Come creare automaticamente il DataBase durante il processo di installazione
2007/08/14 | Autore: Alberto De luca
SQL Server Nozioni base (parte 2)
Come creare un database in SQL Server Usando solo il codice SQL
2008/03/09 | Autore: Sabrina Cosolo
Fritto Misto - Classi di uso comune (Parte 6)
Helper: Alcuni metodi per organizzarci nell'uso del file System
2007/10/28 | Autore: Sabrina Cosolo
Fritto Misto - Classi di uso comune (parte 5)
Helper: Eccezioni personalizzate e Messaggi compositi
2007/10/27 | Autore: Sabrina Cosolo
Lavorare con gli Array
Il problema dello zaino
2007/07/29 | Autore: Alberto De Luca
    Stampa     
Home|Forums|Blogs|Mappa del sito
© 2007-2010 by DotNetWork  .:.  Condizioni d'uso  .:.  Privacy  .:.  Accedi  .:.