Frage

Ich habe zwei Tabellen sagen A und B. Ein cols sind GUID, someintVar, someMoreIntvar B col sind GUID, someItemNO, SomeItemDesc

Jetzt für eine GUID werde ich nur eine Zeile in Tabelle A, aber ich mehrere Zeilen für die gleiche GUID haben kann. Jetzt möchte ich die Datenbank abzufragen, basierend auf GUID und wählen Sie Werte in einer Klasse. Diese Klasse wird eine Liste hat, die verschiedenen Reihen halten wird aus der zweiten Tabelle kommen. Wie kann ich es tun?

Right Now viele Elemente im Ergebnis bin ich immer auf, wie viele Zeilen in der zweiten Tabelle gibt für die GUID.

var itemColl = from p in db.A
               join item in db.B on p.CardID equals item.CardID
               where p.CardID == "some GUID"
               select new 
               {
                   p.CardID,
                   p.secondCol,
                   p.ThirdCol,
                   item.ItemNo // How to add them in a collection or list.
               };
War es hilfreich?

Lösung

Unested, aber wie wäre es ein bisschen neu zu schreiben:

var itemColl = from p in db.A
               where p.CardID == "some GUID"
               select new {
                   p.CardID,
                   p.secondCol,
                   p.ThirdCol,
                   Items = db.B.Where(b=>b.CardID==p.CardID)
                      //.Select(b=>b.ItemNo) [see comments]
               }

Alternativ könnten Sie vielleicht Gruppe ...

Andere Tipps

Sie haben eine Fremdschlüsselbeziehung zwischen A und B auf GUID einrichten Unter der Annahme. (Und wenn Sie nicht über DB-Schema ist kaputt und muss repariert werden)

var itemColl = from p in db.A
               where p.CardID == "some GUID"
               select new 
               {
                   p.CardID,
                   p.secondCol,
                   p.ThirdCol,
                   Items = p.Bs
               }

Unter der Annahme, dies wird in der neuen oder LOAD-Methode der Klasse passiert ... das ist, wie ich es tun würde ...

dim myAItem AS A = (from x in db.As WHERE x.CardID == MyGUIDValue).SelectSingleOrDefault

' Assign Variables Here
Me.AValue1 = myAItem.FromDbValue1

dim itemColl = (from b in db.Bs on b == MyGUIDValue).ToList 

me.ItemList = New List(of MySubClass)
For each bItem as B in itemColl
   dim item as New MySubClass
   'Assign Variables Here, ex: item.Value1 = bItem.MyDbValue1
   me.ItemList.Add(item)
Next
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top