문제

나는 두 개의 테이블이 있습니다.

이제 하나의 안내에 대해서는 표 A에 단 하나의 행 만 가질 것입니다. 그러나 동일한 가이드에 대해 여러 행을 가질 수 있습니다. 이제 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.
               };
도움이 되었습니까?

해결책

Unested, 그러나 그것을 조금 다시 작성하는 것은 어떻습니까 :

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

또는 아마도 그룹을 그룹화 할 수 있습니다 ...

다른 팁

Guid의 A와 B 사이에 외국 키 관계가 설정되어 있다고 가정합니다. (그리고 DB 스키마가 고장 났고 수정해야한다면)

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

이것이 당신의 수업의 신규 또는로드 방법에서 일어나고 있다고 가정하면 ... 이것이 내가 어떻게 할 것인가 ...

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top