문제
나는 두 개의 테이블이 있습니다.
이제 하나의 안내에 대해서는 표 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
제휴하지 않습니다 StackOverflow