Fehlermeldung bei Linq Abfrage mit Null
The cast to value type System.Int32 failed because the
materialized value is null. |
Lösung in Linq
Man muss SQL Daten Felder, welche null sein können, in der Ausgabe mit (int?) umwandeln
IDMaschinengruppe= (int?) linked_Maschinengruppen.IDMaschinenGruppe , |
var data = (from tbl in db.tblBase_Mitarbeiter
join schichtGruppe in db.tblBase_Schichtgruppen on tbl.IDSchichtgruppe equals schichtGruppe.IDSchichtgruppe into joined_Mitarbeiter_Schichtruppen from linked_Schichtgruppen in joined_Mitarbeiter_Schichtruppen.DefaultIfEmpty()
join maschine in db.tblBase_Maschinen on tbl.IDMaschine equals maschine.IDMaschine into joined_Mitarbeiter_Maschinen from linked_Maschinen in joined_Mitarbeiter_Maschinen.DefaultIfEmpty()
join maschinenGruppen in db.tblBase_Maschinengruppen on linked_Maschinen.IDMaschine equals maschinenGruppen.IDMaschinenGruppe into joined_Maschinen_Maschinengruppen from linked_Maschinengruppen in joined_Maschinen_Maschinengruppen.DefaultIfEmpty()
orderby tbl.Nachname ascending select new { IDMitarbeiter = tbl.IDMitarbeiter , Nachname = tbl.Nachname,
IDMaschine = tbl.IDMaschine, Maschine = linked_Maschinen.Maschine, IDMaschinengruppe= (int?) linked_Maschinengruppen.IDMaschinenGruppe , IDSchichtgruppe=tbl.IDSchichtgruppe, Schichtgruppe = linked_Schichtgruppen.Schichtgruppe
} ) .Take(1000);
|
Final die komplette Lade-Methode zum füllen eines Datengrids in WPF
//----------------< load_DataGrid() >---------------- ctlDataGrid.Items.Clear();
try { //----< Daten laden >---- //< get_Data > //#TODO: hier den Tag berechnen und die Schicht... anhand der Tag-Name vom Sourcepanel
var data = (from tbl in db.tblBase_Mitarbeiter
join schichtGruppe in db.tblBase_Schichtgruppen on tbl.IDSchichtgruppe equals schichtGruppe.IDSchichtgruppe into joined_Mitarbeiter_Schichtruppen from linked_Schichtgruppen in joined_Mitarbeiter_Schichtruppen.DefaultIfEmpty()
join maschine in db.tblBase_Maschinen on tbl.IDMaschine equals maschine.IDMaschine into joined_Mitarbeiter_Maschinen from linked_Maschinen in joined_Mitarbeiter_Maschinen.DefaultIfEmpty()
join maschinenGruppen in db.tblBase_Maschinengruppen on linked_Maschinen.IDMaschine equals maschinenGruppen.IDMaschinenGruppe into joined_Maschinen_Maschinengruppen from linked_Maschinengruppen in joined_Maschinen_Maschinengruppen.DefaultIfEmpty()
orderby tbl.Nachname ascending select new { IDMitarbeiter = tbl.IDMitarbeiter , Nachname = tbl.Nachname,
IDMaschine = tbl.IDMaschine, Maschine = linked_Maschinen.Maschine, IDMaschinengruppe= (int?) linked_Maschinengruppen.IDMaschinenGruppe , IDSchichtgruppe=tbl.IDSchichtgruppe, Schichtgruppe = linked_Schichtgruppen.Schichtgruppe
} ) .Take(1000);
//</ get_Data >
//--< @Loop: Rows >-- foreach (var row in data) { if (row.IDMaschine == _IDMaschine) { ctlDataGrid.Items.Add(row); } else if (row.IDMaschinengruppe == _IDMaschinengruppe) { ctlDataGrid.Items.Add(row); } } //--</ @Loop: Rows >--
//----</ Daten laden >---- } catch (Exception ex) { MessageBox.Show(ex.Message); } //----------------</ load_DataGrid() >----------------
|