verwendetes Datenbanksystem: <SQL Server LinqToSql>
Hallöchen,
ich habe mal eine Frage ob das geht was ich vorhabe.
Ich habe 3 Tabellen siehe Anhang
Und folgende Abfrage
var querry = from to in myDB.tblTestObjects
join r in myDB.tblRefFaNoTestObjects on to.TestObjectID equals r.TestObjectID
join fa in myDB.tblFANos on r.FANoID equals fa.FANoID
select new
{
to.ModelNo,
to.ArticleSN,
fa.FANo
};
Die Abfrage liefert mir alle einträge aus tblTestObject die auch einen Eintrag in der Referenz Tabelle haben.
Kann man das so umschreiben, dass alle Einträge zurückgegeben werden auch die die keine einträge in der Referenz Tabelle haben. Bin in Linq noch nicht wirklich fit......
So z.B. Result
[0]{ModelNo="test", ArticleSN="1234", FANo= "JD1234"}
[1]{ModelNo="test", ArticleSN="5678", FANo= null} <- Kein Eintrag in der RefTabelle
bzw.
[0]{ModelNo="test", ArticleSN="1234", FANo= "JD1234"}
[1]{ModelNo="test", ArticleSN="5678"}
Geht das?
Danke schonmal und Grüße
Steven
Hi...
dazu gibt es im Web viele Beispiele.
Such einfach mal nach "Linq2sql left join".
lg
Sollte mit from und DefaultIfEmpty klappen.
var querry = from to in myDB.tblTestObjects
from r in myDB.tblRefFaNoTestObjects.Where(c => c.TestObjectID == to.TestObjectID).DefaultIfEmpty
join fa in myDB.tblFANos on r.FANoID equals fa.FANoID
select new
{
to.ModelNo,
to.ArticleSN,
fa.FANo
};
Den Code hab ich jetzt nur so runter getippt. Kann sein da du noch was ändern musst.
Sollte man mal gelesen haben:
Vielen dank für eure Hilfe. Mit dem Beispiel bzw. denkanstoß hat es soweit schonmal geklappt.
var q = (from to in myDB.tblTestObjects
join r in myDB.tblRefFaNoTestObjects on to.TestObjectID equals r.TestObjectID into g1
from fo in g1.DefaultIfEmpty()
group new
{
to.ModelNo,
to.ArticleSN,
to.TestObjectID,
fo.tblFANo.FANo,
}by to.ModelNo);
foreach (var grouping in q)
{
TreeNode nodeFor = new TreeNode();
nodeFor.Name = "Model";
nodeFor.Text = grouping.Key;
nodeFor.Tag = "Model";
treeView.Nodes.Add(nodeFor);
foreach (var item in grouping)
{
TreeNode subitem = new TreeNode();
subitem.Name = "SN";
subitem.Text = item.ArticleSN + " (" + item.FANo+")";
subitem.Tag = item.TestObjectID;
nodeFor.Nodes.Add(subitem);
foreach(var item2 in item) //<- hier soll noch die FaNo ausgeben werden
{
}
}
}
Aber ich brauche noch ein Tipp 😃 Wie mache ich das mit verschachtelten Gruppen. Ich möcht so einen TreeView füllen. Einmal gruppieren ist kein problem nur die zweite Gruppierung bekomm ich nicht hin. D.h. Model und SN klappt nur dazu die untergruppe FaNo klappt nicht.
-Model
----SN
--------FaNo
----SN
--------FaNo
-Model
----SN
Danke und Grüße
Steven
Hi steven,
wenn du zwei Hierarchie-Ebenen hast, dann mußt du die Daten auch zweimal gruppieren.
Ansonsten solltest du deinen Code strukturieren und keinesfalls Elemente der View im Code erzeugen. Verwende besser MVVM und das HierarchicalDataTemplate, um dein ViewModel an den TreeView zu binden.
Eventuell interessiert dich auch [Artikel] Drei-Schichten-Architektur
Weeks of programming can save you hours of planning