Domanda

Ho due tabelle che dicono A e B. A cols sono GUID, someintVar, someMoreIntvar B col sono GUID, someItemNO, SomeItemDesc

Ora per un GUID avrò solo una riga nella Tabella A. Ma posso avere più righe per lo stesso GUID. Ora voglio interrogare il database in base al GUID e selezionare i valori in una classe. Questa classe avrà un elenco che conterrà diverse righe provenienti dalla seconda tabella. Come posso farlo?

In questo momento sto ottenendo molti elementi nel risultato in base a quante righe ci sono nella seconda tabella per quel 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.
               };
È stato utile?

Soluzione

Non testato, ma che ne dici di riscriverlo un po ':

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]
               }

In alternativa, potresti forse raggruppare ...

Altri suggerimenti

Supponendo di avere una relazione di chiave esterna impostata tra A e B su GUID. (E se non lo fai, lo schema db è rotto e deve essere corretto)

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

Supponendo che ciò accada nel metodo NEW o LOAD della tua classe ... ecco come lo farei ...

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top