Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Grazie 1000 Marco!
    Si ho appena iniziato a infilarci il naso ma ho già notato la potenza di LINQ e E. Frameworks (il metodo savechanges() che gestisce le transazioni gerarchicamente in automatico è stupendo) i quali snelliscono il codice in maniera veramente straordinaria.

    Anche io uso il metodo .toList() però in effetti non avevo contestualizzato il fatto che la mia variabile "lista" è solo un espressione e non un esecuzione!

    Ora non ho l'ambiente di sviluppo non essendo in ufficio quindi non posso testare il tutto!

    Ti faccio una domanda preventiva:

    Devo dunque trattare la variabile lista come se fosse una stringa? Compoenendola a mio piacimento cone la condizioni IF?

    Scaricherò anche LinqPad che sicuramente mi farà molto ma molto comodo!

    Per adesso grazie! Ti aggiorno appena sono al pc dell'ufficio!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Si ho appena iniziato a infilarci il naso ma ho già notato la potenza di LINQ e E. Frameworks (il metodo savechanges() che gestisce le transazioni gerarchicamente in automatico è stupendo) i quali snelliscono il codice in maniera veramente straordinaria.
    Tieni conto che LINQ costituisce un linguaggio a parte, ovvero si tratta di un supporto per costruire espressioni che esula dall'utilizzo esclusivo con Entity Framework, ma si applica a prescindere su qualsiasi "enumerabile".

    Poi, a seconda dell'oggetto di partenza (es. DbSet di EF, oppure una lista di oggetti, ecc.) che è quello a cui viene demandata l'esecuzione dell'espressione, si hanno diverse implementazioni (LINQ To SQL su ADO.NET, LINQ To Objects per liste/array/collezioni, LINQ To XML per file XML, LINQ To Entities per EF, ...) che permettono di interpretarla fattivamente e tradurla nell'implementazione opportuna che restituisce il dato desiderato.

    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Anche io uso il metodo .toList() però in effetti non avevo contestualizzato il fatto che la mia variabile "lista" è solo un espressione e non un esecuzione!
    E' un principio fondamentale da tenere ben presente, soprattutto per gli effetti collaterali che ne possono derivare, ma anche per i vantaggi (trovi tutto nell'articolo segnalato).

    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Ti faccio una domanda preventiva:
    Devo dunque trattare la variabile lista come se fosse una stringa? Compoenendola a mio piacimento cone la condizioni IF?
    Diciamo "ni". Sicuramente non è una stringa, ma non va pensato come qualcosa progettato per accodarvi delle clausole.

    Il principio è che una espressione LINQ parte da una enumerazione di qualcosa e permette di filtrarla (where), ordinarla order by, estrarre qualcosa di diverso o un elemento dell'insieme originale (select), ma solo nel momento in cui viene eseguita.

    Ogni espressione LINQ quindi è anche automaticamente una nuova "enumerazione" sulla quale è possibile costruire un'altra espressione, che potrebbe un altro filtro ancora, proiettare qualcosa di diverso e così via.

    Se una espressione LINQ viene usata come origine per basarvi sopra un'altra espressione, poi un'altra e un'altra ancora e così via, alla fine si ottiene una catena di elaborazioni che produrranno alla fine il risultato desiderato, con il vantaggio che l'effettiva esecuzione viene fatta una volta sola, alla fine, quando si chiama una delle funzioni di aggregazione (es. Sum, Max, ...) oppure una funzione che estrae una lista o un array dei valori (es. ToList, ToArray, ToDictionary, ...) oppure un solo elemento, come il primo (First), il primo o un valore di default (FirstOrDefault), l'ultimo (Last) e così via, oppure banalmente quando si inizia un ciclo sull'espressione.

    Se il motore che riceve l'espressione in carico è abbastanza intelligente (e quello di EF generalmente lo è), l'espressione viene combinata e semplificata per essere eseguita nel modo più veloce possibile.

    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Scaricherò anche LinqPad che sicuramente mi farà molto ma molto comodo!
    Oltre ad essere comodo (a volte lo uso come sostituto di SQL Server Management Studio), ha proprio tutto quello che serve per analizzare le espressioni e vedere come LINQ si comporta, oltre a includere degli esempi e dei tutorial che fanno capire le potenzialità e i principi di funzionamento.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.