Linq SQL Beispiel:
Linq Beispiel
Folgender Beispiel Code erstellt eine Linq Abfrage zu einer SQL Datenbank, welche die Daten aus 4 Tabellen zusammensetzt.
Dabei werden die Tabellen mit JOIN verbunden und über .DefaultIfEmpty() zu Left oder Right Joins.
Final werden die Spalten mit Select new{..} zusammengestellt.
//----< Daten laden >---- //< get_Data > var data = (from tbl in db.tblBase_Mitarbeiter
join schicht in db.tblBase_Schichten on tbl.IDSchicht equals schicht.IDSchicht into schichtGroup from schichtrow in schichtGroup.DefaultIfEmpty()
join maschine in db.tblBase_Maschinen on tbl.IDMaschine equals maschine.IDMaschine into maschineGroup from maschinenrow in maschineGroup.DefaultIfEmpty()
join ma in db.tblBase_Mitarbeitergruppen on tbl.IDMitarbeitergruppe equals ma.IDMitarbeitergruppe into maGroup from marow in maGroup.DefaultIfEmpty()
orderby tbl.Nachname ascending select new { IDMitarbeiter = tbl.IDMitarbeiter, Nachname = tbl.Nachname, Vorname = tbl.Vorname, Maschine = maschinenrow.Maschine, Mitarbeitergruppe = marow.Mitarbeitergruppe, Schicht = schichtrow.Schicht } ) .Take(1000);
//</ get_Data >
//--< @Loop: Rows >-- foreach (var row in data) { ctlDataGrid.Items.Add(row); } //--</ @Loop: Rows >--
|
WPF DataGrid, XAML
In eine WPF DataGrid..
<DataGrid x:Name="ctlDataGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" AutoGenerateColumns="False" GridLinesVisibility="All" Background="#F0f0f0" ItemsSource="{Binding}" SelectionMode="Single" IsReadOnly="True" MouseDoubleClick="ctlDataGrid_MouseDoubleClick" SelectionChanged="CtlDataGrid_SelectionChanged" HeadersVisibility="All" Grid.Row="1" SelectedValuePath="IDMitarbeiter" >
<DataGrid.Columns > <DataGridTextColumn Header="ID" Binding="{Binding IDMitarbeiter}"/> <DataGridTextColumn Header="Nachname" Binding="{Binding Nachname}"/> <DataGridTextColumn Header="Vorname" Binding="{Binding Vorname}"/> <DataGridTextColumn Header="Schicht" Binding="{Binding Schicht}" /> <DataGridTextColumn Header="Maschine" Binding="{Binding Maschine}"/> <DataGridTextColumn Header="MA Gruppe" Binding="{Binding Mitarbeitergruppe}" Width="*"/>
</DataGrid.Columns> </DataGrid>
|
Tabellen-Beziehungen JOIN
Die folgende Datengrid Tabelle setzt sich aus den ersten Spalten einer Mitarbeiter-Tabelle zusammen und die Maschine, Schicht und Mitarbeitergruppe jeweils aus den Nebentabellen.
Dabei ist zu beachten, dass keine verbindliche JOIN Verbindung vom Mitarbeiter zu den Neben-Tabellen besteht, sondern optional Auswahlen stattfinden.
Deshalb muss in SQL LEFT oder RIGHT JOIN ausgewählt werden