2010-08-18 2 views
0

다시 멍청한 질문/시나리오로 나에게 조언이 필요해.LINQ 가입 필요?

나는 컬럼의 내용을 다시 끌어 다음과 같습니다

return getappropriateuserfield.tblAutoComplete 
        .Where(p => p.MemberId == memberid && p.ACItem == acitem) 
        .Select(p => p.ACColumn) 
        .Distinct() 
        .ToArray(); 

이 결과에 따라, 그때 경우 ACColumn 결과를 가지고 tblPreferences로 이동의 ColumnName을보고,하고 싶은지도

MemberID ACItem ACColumn 
     1  2  UUF1 

tblPreferences 외모 : 그것은 예를 들어 우리가 tblAutoComplete이,

그래서 (tblPreferences에 존재) 별칭을 철수, 거기에있는 항목과 일치 같은

MemberID ColumnName Alias 
     1  UUF1 Category 

ACItem으로 "2"의 사용자 스틱, 첫 번째 부분의 결과가 "UUF1을"될 경우 - LINQ는 위의이 작업을 수행합니다.

두 번째 부분이 일어나도록 linq를 어떻게 변경합니까? UUF1을 취하고, tblPreferences를보고, ColumnName을 체크하고, 결과가 일치하므로 최종 결과가 별칭 인 "Category"가됩니다.

두 부분으로 처리해야합니까, 아니면 하나의 쿼리로 처리 할 수 ​​있습니까? 조인 사용?

두께에 사과드립니다. 당신이 반복을 얻을 수 있음을 의미 내가 여기 Distinct() 호출을 제거했습니다

var query = from ac in foo.tblAutoComplete 
      where ac.MemberId == memberid && ac.ACItem == acitem 
      join pref in foo.tblPreferences.Where(x => x.MemberId == memberid) 
       on ac.ACColumn equals pref.ColumnName 
      select pref.Category; 

참고 : A는 아마도 가장 쉽게 쿼리 식으로 표현되는, 나에게 가입 같은

답변

1

보인다. 물론 Distinct()을 출력에 넣을 수 있습니다.

결과는 IQueryable<string> (범주는 문자열이라고 가정 함)입니다. 비트가 더 필요하면 익명 형식을 사용할 수 있습니다.

EDIT : 쿼리를 편집하여 시작하기 위해 환경 설정을 가져올 때 "where"절이 추가로 필요합니다. 이는 Join에 MemberId를 추가하는 것과 동일해야합니다.

+0

memberId의 가입도 가능합니다. 아마도 최고입니다. –

+0

@ 리카르도 : 편집 됨. 이것은 조인이 아니라 여분의 where 절에 있습니다. –