Operazioni di join

Un'operazione di join di due origini dati è l'associazione di oggetti in un'origine dati con gli oggetti che condividono un attributo comune in un'altra origine dati.

L'operazione di join è un'operazione importante nelle query destinate alle origini dati le cui relazioni reciproche non possono essere eseguite direttamente. Nella programmazione orientata a oggetti può rappresentare una correlazione tra oggetti non modellata, ad esempio la direzione inversa di una relazione unidirezionale. Un esempio di una relazione unidirezionale è una classe Customer contenente una proprietà di tipo City, ma la classe City non contiene una proprietà equivalente a un insieme di oggetti Customer. Se si dispone di un elenco di oggetti City e si desidera cercare tutti i clienti di ogni città, è possibile a tale scopo utilizzare un'operazione di join.

I metodi di join forniti nel framework LINQ sono Join e GroupJoin. Questi metodi eseguono equijoins o join che creano una corrispondenza tra due origini dati in base all'uguaglianza delle relative chiavi. Per eseguire il confronto, Transact-SQL supporta gli operatori di join tranne 'equals', ad esempio l'operatore 'less than'. In termini di database relazionale, Join implementa un inner join, un tipo di join in cui vengono restituiti solo quegli oggetti che hanno una corrispondenza nell'altro set di dati. Il metodo GroupJoin non dispone di un equivalente diretto in termini di database relazionale, ma implementa un superset di inner join e left outer join. Un left outer join è un join che restituisce ogni elemento della prima origine dati (a sinistra), anche se non ha elementi correlati nell'altra origine dati.

Nella figura seguente viene illustrata una visione concettuale di due insiemi e degli elementi all'interno di tali insiemi inclusi in un inner join o in un left outer join.

Due cerchi sovrapposti che mostrano interno/esterno

Metodi

Nome metodo

Descrizione

Sintassi dell'espressione di query in C#

Sintassi dell'espressione di query in Visual Basic

Ulteriori informazioni

Join

Unisce due sequenze in base alle funzioni del selettore principale ed estrae le coppie di valori.

join … in … on … equals …

From x In …, y In … Where x.a = y.a

-oppure-

Join … [As …]In … On …

Enumerable.Join

Queryable.Join

GroupJoin

Unisce due sequenze in base alle funzioni del selettore principale e raggruppa le corrispondenze risultanti per ogni elemento.

join … in … on … equals … into …

Group Join … In … On …

Enumerable.GroupJoin

Queryable.GroupJoin

Vedere anche

Attività

Procedura: formulare join e query di prodotto incrociato (LINQ to SQL)

Procedura: eseguire un join utilizzando una chiave composta (Guida per programmatori C#)

Procedura: unire contenuto da file dissimili (LINQ)

Procedura: ordinare i risultati di una clausola join (Guida per programmatori C#)

Procedura: eseguire operazioni di join personalizzate (Guida per programmatori C#)

Procedura: eseguire dei join raggruppati (Guida per programmatori C#)

Procedura: eseguire degli inner join (Guida per programmatori C#)

Procedura: eseguire dei left outer join (Guida per programmatori C#)

Procedura: popolare insiemi di oggetti da più origini (LINQ)

Riferimenti

System.Linq

Tipi anonimi (Guida per programmatori C#)

Clausola join (Riferimento C#)

Clausola Join (Visual Basic)

Concetti

Cenni preliminari sugli operatori di query standard

Anonymous Types

Tipi di join