2011-03-08 5 views
0

는 다음이 문제를 설명하기위한 목적으로 샘플 데이터있는 외국 법인으로 설정되어 내 LINQ 쿼리 작성 방법 : "위의 예제 테이블을 사용나는 제대로 조건이

tblPrimary 
1, John, 2011-01-03T11:12:00z 
2, John, 2011-02-04T10:54:12z 

tblDetail: 
1, 1, 14, Dept01 
2, 1, 12, Dept02 
3, 2, 10, Dept03 
4, 2, 17, Dept04 

는 주어진 오전 이름 "여기서 tblPrimary.Name의 이름과 관련된 모든 세부 레코드를 반환해야합니다. tblPrimary.Name은 고유하지 않으므로 중복 될 수 있지만 실제로는 다른 광고 항목입니다 (날짜가 & 일).

SQLMetal을 사용하면 개체가 두 테이블 간의 관계를 처리하도록 코드가 생성됩니다.

var q = from i in dbcontext.tblDetail 
where i.tblPrimary.Name == 'John' && i.PrimaryId == i.tblPrimary.PrimaryId 
select i; 

을 내가 다른 DateAdded와 tblPrimary에서 두 개의 "존", 각 존에 대한 tblDetail 2 개 기록이있는 경우, 결과는 반환, 위의 예제 데이터를 사용하여 다음과 같이이 점을 염두에 유지하는 것은, 나는 쿼리를 생성 쿼리입니다 : 내가 조인 사용하지 않고이 LINQ 쿼리를 해결하는 방법

John - 2011-01-03T11:12:00z 
1, 1, 14, Dept01 
2, 1, 12, Dept02 
John - 2011-02-04T10:54:12z 
3, 2, 10, Dept03 
4, 2, 17, Dept04 

누군가가 제안 할 수 있습니다 :

John - 2011-01-03T11:12:00z 
1, 1, 14, Dept01 
2, 1, 12, Dept02 
3, 2, 10, Dept03 
4, 2, 17, Dept04 
John - 2011-02-04T10:54:12z 
1, 1, 14, Dept01 
2, 1, 12, Dept02 
3, 2, 10, Dept03 
4, 2, 17, Dept04 

내가 정말 결과에 원하는 것은 이것이다? 두 테이블 간의 sqlmetal 생성 관계가 조인을 이미 처리해야한다고 가정합니다.

답변

0

흠, 쿼리의이 부분을보고 :

i.PrimaryId == i.tblPrimary.PrimaryId 

tblPrimary 속성은이 표현이 항상 true입니다 방식으로 정의된다. 내가 조인 사용하지 않고이 LINQ 쿼리를 해결하는 방법


누구나 제안 할 수 있나요?

어때요?

var q = 
    from i in dbcontext.tblDetail 
    let j = i.tblPrimary 
    select new {Detail = i, Primary = j};