Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Linq SQL Beispiel mit mehreren Tabellen in ein DataGrid laden

29.12.2018 (👁9686)

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