SlideShare una empresa de Scribd logo
1 de 42
Microsoft .NET Framework tra presente e futuro




      Andrea Angella
      Dott. in Ingegneria Informatica
      Email: andrea.angella@dotnettoscana.org
      Blog: http://blogs.ugidotnet.org/angellaa
   Introduzione a LINQ
   Rapida rivisitazione di C# 2.0
   Nuove caratteristiche di C# 3.0
   LINQ to Object
   LINQ to SQL
   Altre implementazioni di LINQ
   Domande e risposte




                                      2
C# 3.0                 VB 9.0                    Altri…


                  .NET Language Integrated Query



LINQ to Objects   LINQ to SQL            LINQ to Xml         LINQ to X


                                          <university>



                                                                   ?
                                           <studente />
                                           <studente />
                                          </university>




   Grafo di         Database             Documento
   oggetti         SQL Server               XML


                                                                         3
4
   Introduzione a LINQ
   Rapida rivisitazione di C# 2.0
   Nuove caratteristiche del C# 3.0
   LINQ to Object
   LINQ to SQL
   Altre implementazioni di LINQ
   Domande e risposte




                                       5
Type
Inference



            6
7
Anonymous
  Method
            8
   Introduzione a LINQ
   Rapida rivisitazione del C# 2.0
   Nuove caratteristiche di C# 3.0
   LINQ to Object
   LINQ to SQL
   Altre implementazioni di LINQ
   Domande e risposte




                                      9
10
11
12
13
14
Lo sviluppatore
non conosce il
 nome del tipo
   generato




                  15
16
Cosa fà questo
 statement ?




                 17
18
Lambda
                                         Expression




Local Type
 Inference
             Extension                   Object
              Methods    Anonymous
                                     Initialization
                            Type
                                      Expression

                                                      19
   Introduzione a LINQ
   Rapida rivisitazione di C# 2.0
   Nuove caratteristiche del C# 3.0
   LINQ to Object
   LINQ to SQL
   Altre implementazioni di LINQ
   Domande e risposte




                                       20
Extension Methods
su IEnumerable<T>



                    21
   Proiezione: select
   Restrizione: where
   Ordinamento: orderby                Supportati dalle
                                       Query Expression
   Raggruppamento: group by
   Di join: join

   Insiemistici: Distinct, Union, Intersect, Except
   Aggregazione: Count, Sum, Min, Max, Average, Aggregate
   Generazione: Range, Repeat, Empty
   Quantificazione: Any, All, Contains
   Partizionamento: Take, TakeWhile, Skip, SkipWhile
   Elemento: First, Last, Single, ElementAt, DefaultIfEmpty
   Conversione: AsEnumerable, ToArray, ToList, ToDictionary,
                  ToLookup, OfType, Cast


                                                                22
Proiezione
  di una
collection




             23
Operatori
 logici




 SubQuery

            24
Ordinamento
  multiplo

              25
Campo di
raggruppamento




                 26
27
Operatore di
aggregazione




         Operatori di
       partizionamento




                         28
Modifica della
sorgente dati




                 29
Operatore di
conversione




               30
31
32
   Introduzione a LINQ
   Rapida rivisitazione di C# 2.0
   Nuove caratteristiche del C# 3.0
   LINQ to Object
   LINQ to SQL
   Altre implementazioni di LINQ
   Domande e risposte




                                       33
LINQ to SQL




                    Mapping 1 a 1




Modello a oggetti                   Schema del database


                                                      34
35
   Pensando in SQL (approccio relazionale)
    ◦ Utilizzando operatori di join




   Pensando in LINQ (approccio object oriented)
    ◦ Navigando tra le entity sfruttando le relazioni




                                                        36
Inserimento




       Modifica




Conferma le
 modifiche
                                37
   Introduzione a LINQ
   Rapida rivisitazione di C# 2.0
   Nuove caratteristiche del C# 3.0
   LINQ to Object
   LINQ to SQL
   Altre implementazioni di LINQ
   Domande e risposte




                                       38
   Supportate da Microsoft
    ◦   LINQ to Dataset
    ◦   LINQ to XML
    ◦   LINQ to Entities
    ◦   Parallel LINQ
   Supportate dalla community
    ◦   LINQ   to   Amazon
    ◦   LINQ   to   Flickr
    ◦   LINQ   to   Google
    ◦   LINQ   to   Active Directory
    ◦   LINQ   to   Lucene
    ◦   LINQ   to   Excel
    ◦   LINQ   to   WMI
    ◦   …


                                       39
1.   LINQ mi offre un modello uniforme per
     interrogare qualsiasi sorgente dati
2.   LINQ mi permette di scrivere le query con
     un approccio dichiarativo e naturale
3.   LINQ è completamente supportato da Visual
     Studio 2008 e questo aumenta in maniera
     eccezionale la mia produttività
4.   LINQ to SQL mi offre la possibilità di
     pensare in modo object-oriented quando
     interagisto con il database relazione SQL
     Server


                                                 40
   Percorso formativo
    “LINQ e le novità dei linguaggi .NET”
    ◦ http://msdn.microsoft.com/it-it/vbasic/cc299390.aspx
   LINQ Italia
    ◦ http://www.linqitalia.com/


   “Programming Microsoft LINQ”
    ◦ Paolo Pialorsi e Marco Russo
    ◦ Disponibile anche in Italiano




                                                             41
Andrea Angella
Dott. in Ingegneria Informatica
Email: andrea.angella@dotnettoscana.org
Blog: http://blogs.ugidotnet.org/angellaa

Más contenido relacionado

Destacado

Deep diving C# 4 (Raffaele Rialdi)
Deep diving C# 4 (Raffaele Rialdi)Deep diving C# 4 (Raffaele Rialdi)
Deep diving C# 4 (Raffaele Rialdi)DotNetMarche
 
Windows 10 app design
Windows 10 app designWindows 10 app design
Windows 10 app designLuca Di Fino
 
Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Manuel Scapolan
 
Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Manuel Scapolan
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRSManuel Scapolan
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModelDotNetMarche
 
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulLuca Milan
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
 
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaMauro Servienti
 
Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Manuel Scapolan
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreManuel Scapolan
 
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven ArchitectureLuca Milan
 

Destacado (18)

Deep diving C# 4 (Raffaele Rialdi)
Deep diving C# 4 (Raffaele Rialdi)Deep diving C# 4 (Raffaele Rialdi)
Deep diving C# 4 (Raffaele Rialdi)
 
Windows 10 app design
Windows 10 app designWindows 10 app design
Windows 10 app design
 
Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Dai delegati a LINQ con C#
Dai delegati a LINQ con C#
 
Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)
 
Knockout.js
Knockout.jsKnockout.js
Knockout.js
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTful
 
WPF basics
WPF basicsWPF basics
WPF basics
 
WPF
WPFWPF
WPF
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
 
NOSQL
NOSQLNOSQL
NOSQL
 
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteria
 
Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatore
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
 

Similar a C# 3.0 e LINQ

Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsIgor Antonacci
 
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...LeD87
 
LinuxDay2013 - Web2py: make the web easier
LinuxDay2013 - Web2py: make the web easierLinuxDay2013 - Web2py: make the web easier
LinuxDay2013 - Web2py: make the web easierDavide Marzioni
 
Migrazione della base di dati operativa di un'assicurazione vita diretta
Migrazione della base di dati operativa di un'assicurazione vita direttaMigrazione della base di dati operativa di un'assicurazione vita diretta
Migrazione della base di dati operativa di un'assicurazione vita direttaguest8107dde4
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNetMauro Servienti
 
Dynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerDynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerMarco Parenzan
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]Andrea Maddalena
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateManuel Scapolan
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetesdotnetcode
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1dotnetcode
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLPar-Tec S.p.A.
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality CodeDaniele Mondello
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ CodeDaniele Mondello
 
Layer di persistenza in una applicazione Eclipse RCP
Layer di persistenza in una applicazione Eclipse RCPLayer di persistenza in una applicazione Eclipse RCP
Layer di persistenza in una applicazione Eclipse RCPNelson Firmani
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 

Similar a C# 3.0 e LINQ (20)

Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
 
LinuxDay2013 - Web2py: make the web easier
LinuxDay2013 - Web2py: make the web easierLinuxDay2013 - Web2py: make the web easier
LinuxDay2013 - Web2py: make the web easier
 
Migrazione della base di dati operativa di un'assicurazione vita diretta
Migrazione della base di dati operativa di un'assicurazione vita direttaMigrazione della base di dati operativa di un'assicurazione vita diretta
Migrazione della base di dati operativa di un'assicurazione vita diretta
 
Spring 2.5
Spring 2.5Spring 2.5
Spring 2.5
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet
 
Dynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerDynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed Programmer
 
Relazione Agic
Relazione AgicRelazione Agic
Relazione Agic
 
Diagrammi di Attività
Diagrammi di AttivitàDiagrammi di Attività
Diagrammi di Attività
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetes
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Layer di persistenza in una applicazione Eclipse RCP
Layer di persistenza in una applicazione Eclipse RCPLayer di persistenza in una applicazione Eclipse RCP
Layer di persistenza in una applicazione Eclipse RCP
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 

Más de Andrea Angella

Performance testing with NBench
Performance testing with NBenchPerformance testing with NBench
Performance testing with NBenchAndrea Angella
 
Advanced Algorithms #1 - Union/Find on Disjoint-set Data Structures.
Advanced Algorithms #1 - Union/Find on Disjoint-set Data Structures.Advanced Algorithms #1 - Union/Find on Disjoint-set Data Structures.
Advanced Algorithms #1 - Union/Find on Disjoint-set Data Structures.Andrea Angella
 

Más de Andrea Angella (6)

C# 7.X and beyond
C# 7.X and beyondC# 7.X and beyond
C# 7.X and beyond
 
C# 7
C# 7C# 7
C# 7
 
Performance testing with NBench
Performance testing with NBenchPerformance testing with NBench
Performance testing with NBench
 
Windows 10 overview
Windows 10 overviewWindows 10 overview
Windows 10 overview
 
Advanced Algorithms #1 - Union/Find on Disjoint-set Data Structures.
Advanced Algorithms #1 - Union/Find on Disjoint-set Data Structures.Advanced Algorithms #1 - Union/Find on Disjoint-set Data Structures.
Advanced Algorithms #1 - Union/Find on Disjoint-set Data Structures.
 
WP7 Game Lab
WP7 Game LabWP7 Game Lab
WP7 Game Lab
 

Último

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 

Último (9)

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 

C# 3.0 e LINQ

  • 1. Microsoft .NET Framework tra presente e futuro Andrea Angella Dott. in Ingegneria Informatica Email: andrea.angella@dotnettoscana.org Blog: http://blogs.ugidotnet.org/angellaa
  • 2. Introduzione a LINQ  Rapida rivisitazione di C# 2.0  Nuove caratteristiche di C# 3.0  LINQ to Object  LINQ to SQL  Altre implementazioni di LINQ  Domande e risposte 2
  • 3. C# 3.0 VB 9.0 Altri… .NET Language Integrated Query LINQ to Objects LINQ to SQL LINQ to Xml LINQ to X <university> ? <studente /> <studente /> </university> Grafo di Database Documento oggetti SQL Server XML 3
  • 4. 4
  • 5. Introduzione a LINQ  Rapida rivisitazione di C# 2.0  Nuove caratteristiche del C# 3.0  LINQ to Object  LINQ to SQL  Altre implementazioni di LINQ  Domande e risposte 5
  • 7. 7
  • 9. Introduzione a LINQ  Rapida rivisitazione del C# 2.0  Nuove caratteristiche di C# 3.0  LINQ to Object  LINQ to SQL  Altre implementazioni di LINQ  Domande e risposte 9
  • 10. 10
  • 11. 11
  • 12. 12
  • 13. 13
  • 14. 14
  • 15. Lo sviluppatore non conosce il nome del tipo generato 15
  • 16. 16
  • 17. Cosa fà questo statement ? 17
  • 18. 18
  • 19. Lambda Expression Local Type Inference Extension Object Methods Anonymous Initialization Type Expression 19
  • 20. Introduzione a LINQ  Rapida rivisitazione di C# 2.0  Nuove caratteristiche del C# 3.0  LINQ to Object  LINQ to SQL  Altre implementazioni di LINQ  Domande e risposte 20
  • 22. Proiezione: select  Restrizione: where  Ordinamento: orderby Supportati dalle Query Expression  Raggruppamento: group by  Di join: join  Insiemistici: Distinct, Union, Intersect, Except  Aggregazione: Count, Sum, Min, Max, Average, Aggregate  Generazione: Range, Repeat, Empty  Quantificazione: Any, All, Contains  Partizionamento: Take, TakeWhile, Skip, SkipWhile  Elemento: First, Last, Single, ElementAt, DefaultIfEmpty  Conversione: AsEnumerable, ToArray, ToList, ToDictionary, ToLookup, OfType, Cast 22
  • 23. Proiezione di una collection 23
  • 27. 27
  • 28. Operatore di aggregazione Operatori di partizionamento 28
  • 31. 31
  • 32. 32
  • 33. Introduzione a LINQ  Rapida rivisitazione di C# 2.0  Nuove caratteristiche del C# 3.0  LINQ to Object  LINQ to SQL  Altre implementazioni di LINQ  Domande e risposte 33
  • 34. LINQ to SQL Mapping 1 a 1 Modello a oggetti Schema del database 34
  • 35. 35
  • 36. Pensando in SQL (approccio relazionale) ◦ Utilizzando operatori di join  Pensando in LINQ (approccio object oriented) ◦ Navigando tra le entity sfruttando le relazioni 36
  • 37. Inserimento Modifica Conferma le modifiche 37
  • 38. Introduzione a LINQ  Rapida rivisitazione di C# 2.0  Nuove caratteristiche del C# 3.0  LINQ to Object  LINQ to SQL  Altre implementazioni di LINQ  Domande e risposte 38
  • 39. Supportate da Microsoft ◦ LINQ to Dataset ◦ LINQ to XML ◦ LINQ to Entities ◦ Parallel LINQ  Supportate dalla community ◦ LINQ to Amazon ◦ LINQ to Flickr ◦ LINQ to Google ◦ LINQ to Active Directory ◦ LINQ to Lucene ◦ LINQ to Excel ◦ LINQ to WMI ◦ … 39
  • 40. 1. LINQ mi offre un modello uniforme per interrogare qualsiasi sorgente dati 2. LINQ mi permette di scrivere le query con un approccio dichiarativo e naturale 3. LINQ è completamente supportato da Visual Studio 2008 e questo aumenta in maniera eccezionale la mia produttività 4. LINQ to SQL mi offre la possibilità di pensare in modo object-oriented quando interagisto con il database relazione SQL Server 40
  • 41. Percorso formativo “LINQ e le novità dei linguaggi .NET” ◦ http://msdn.microsoft.com/it-it/vbasic/cc299390.aspx  LINQ Italia ◦ http://www.linqitalia.com/  “Programming Microsoft LINQ” ◦ Paolo Pialorsi e Marco Russo ◦ Disponibile anche in Italiano 41
  • 42. Andrea Angella Dott. in Ingegneria Informatica Email: andrea.angella@dotnettoscana.org Blog: http://blogs.ugidotnet.org/angellaa