2014-02-17 3 views
0

두 개의 List T 객체가 있습니다. 하나는 사용 가능한 포럼 목록이고 다른 하나는 사용자가 선택한 포럼입니다. jquery ajax 호출 중에 실행 중이며 listbox를 채 웁니다.Linq는 고객이 선택한 레코드와 일치하는 두 객체를 결합합니다.

목적은 사용자가 구독 한 포럼에 "선택됨"플래그를 지정하는 것으로 HTML 목록 상자에서 강조 표시된 행으로 렌더링합니다.

이 쿼리를 작성하기 시작했습니다.

var result = (from exf in ExtForum 
    join custfrm in customer.ExternalForums on 
    exf.Id equals custfrm.Id 
    select new { id=exf.Id, name=exf.ForumName, isSelected=(true ? "selected" : "") }) 
    .ToList(); 

이것은 일치하는 포럼 만 반환합니다. 내가 필요로하는 것은 왼쪽 외부 질의이지만, 그것에 대해서 생각할 때 나는 그것이 맞다고 생각하지 않는다. 사용 가능한 모든 포럼을 반환 하겠지만 이제는 제 성냥에 어떻게 깃발을 던질 것인지 생각해 보면 제자리로 되돌아갑니다.

개선을 위해 열린 나의 접근 방식은 기본적으로 문자열 개체를 jquery로 반환하여 HTML 컨트롤을 업데이트하는 것입니다.

ddlExtBoards.append($('<option></option>').val(option.id).html(option.name + " " + option.isSelected)); 

이 "일치"를 달성하기위한 접근 방법에 대한 조언과 방향은 매우 감사하겠습니다.

답변

2

목적은 내가 플래그로 사용자가 left-join 당신이 여기 원하는 것입니다

"선택"에 가입 한 포럼을 원하는 것입니다,이 ExtForum의 모든 레코드가에 포함되어 있음을 의미 최소 한 번 이상 조인과 일치하는 다른 사람

var results = (from exf in ExtForum 
       join custfrm in customer.ExternalForums on 
       exf.Id equals custfrm.Id into customerForums 
       from custForum in customerForums.DefaultIfEmpty() 
       select new 
       { 
        id = exf.Id, 
        name = exf.ForumName, 
        isSelected = custForum != null 
       } 
+0

참조로 http://msdn.microsoft.com/en-us/library/bb397895.aspx를 참조하십시오. – Tarik

+0

@Tarik 감사합니다. 내 대답에 대한 링크를 추가했습니다. – James

+0

오오하 어떻게 지금 완료되었는지 봅니다. 조인을 다른 객체에 덤핑 한 다음 일치시킵니다. 단! – GPGVM