2013-06-04 3 views
1

아래에서 나를 도울 수 있기를 바랍니다. 내가 원하는 것은 주소 정보와 특정 고객의 모든 JobPart를 들면,linq를 사용하는 복수 쿼리

(Job) 
JobID 
CustomerID 
JobPartID 

Job -> JobPart (One to Many) 
(JobPart) 
JobPartID 
JobID [Foreign Key – ref JobID(JobID)] 
Pickup-AddressID [Foreign Key – ref Address(AddressID)] 
Destination-AddressID [Foreign Key – ref Address(AddressID)] 

Address is a separate table 
(Address) 
AddressID 
HouseNo 
Street 
City 
Etc.. 

처럼

내 테이블입니다.

var results = 
    from j in job 
    from jp in j.JobParts 
    where j.CustomerID == 1 
    select new { jp.PickupAddress, jp.DestinationAddress }; 

이것은 당신이 적절한 탐색 속성을 가지고 사이에 설정 한 가정 작동합니다 심지어 # C 유효한 컴파일,하지만 난 당신이 찾고있는 것을 생각하지 않습니다

답변

0

음이 같은 것입니다 JobPartsAddresses.

당신으로 아주 쉽게 사용할 수 있습니다 :

var results = 
    from j in job 
    from jp in j.JobParts 
    where j.CustomerID == 1 
    select new 
    { 
     PickupHouseNo = jp.PickupAddress.HouseNo, 
     PickupStreet = jp.PickupAddress.Street, 
     // ... 
     DestinationHouseNo = jp.DestinationAddress.HouseNo , 
     DestinationStreet = jp.DestinationAddress.Street, 
    }; 
+0

감사 :

foreach(var record in results) { var pickupHouseNo = record.PickupAddress.HouseNo; var pickupStreet = record.PickupAddress.Street; // ... var destinationHouseNo = record.DestinationAddress.HouseNo; var destinationStreet = record.DestinationAddress.Street; // do stuff } 

당신이 정말로 그들에게 플랫 쿼리 결과를 원하는 경우에, 다만 이것을 사용합니다. 내 질문을 편집했습니다. 나는 그것이 분명하지 않다고 생각한다. 내비게이션 속성을 설정했습니다. 하지만 주소 표에서 거리와 도시를 말하고 싶습니다. 어떻게해야합니까? 너무 간단하거나 거의 어려운 질문을하는 것은 유감입니다. – Anup

+0

@Anup 내 원본 코드를 사용하면 원하는 주소 속성을 얻을 수 있지만 플랫 쿼리 결과를 원하면 그렇게 할 수 있습니다. 내 업데이트 답변을 참조하십시오. –

+0

나는 이것을 역시 시도했다. 문제는 jp.Address.Street가 (JobPart-> Address)가 (One to Many)이면 작동합니다. 하지만 여기서 외래 키는 JobPart에 있습니다. 즉, 다른 방법은 (Address -> JobPart) 질의 가능하다는 것을 의미합니다. – Anup