2012-04-23 2 views
0

filterType을 GetPeronMemberDTO에 전달하고 싶습니다. 어떻게 수행할까요? 쿼리 구문은 당신이 let 표현을 사용할 수 있습니다 사용함수에 값 전달

filters = filterItems. 
    AsQueryable(). 
    Select(z => new Person() 
    { 
     Name = z.Name, 
     ID = Convert.ToString(z.ID), 
     FilterType = GetFilterType(Convert.ToString(z.TemplateID)), 
     // TODO : How to pass the filtertype in the below function 
     FilterMembers = GetPeronMemberDTO(
      Convert.ToString(z.ID), 
      searchParamDTO, 
      Convert.ToString(z.TemplateID)), 
    }) 

감사 DS

+0

무엇이'filterItems'와'searchParamDTO'이고 어떤 것이 작동하지 않습니까, 예외가 있습니까? –

+0

'GetFilterType'과'GetPeronMemberDTO'는 무엇을 반환합니까? – Arion

+0

작업 환경을 좀 더 자세하게 설명하십시오. – HW90

답변

4

:

filters = from z in filterItems.AsQueryable() 
      let filterType = GetFilterType(Convert.ToString(z.TemplateID)) 
      select new Person 
      { 
      Name = z.Name, 
      ID = Convert.ToString(z.ID), 
      FilterType = filterType, 
      FilterMembers = GetPeronMemberDTO(Convert.ToString(z.ID), 
       searchParamDTO, Convert.ToString(z.TemplateID), filterType) 
      } 
1
filters = filterItems 
      .AsQueryable() 
      .Select(z => new { 
       Item = z, 
       FilterType = GetFilterType(Convert.ToString(z.TemplateID)) 
      }) 
      .Select(z => new Person() 
      { 
       Name = z.Item.Name, 
       ID = Convert.ToString(z.Item.ID), 
       FilterType = z.FilterType, 
       FilterMembers = GetPeronMemberDTO(Convert.ToString(z.Item.ID), searchParamDTO, z.FilterType), 
      }) 

또는 앤더스 아벨의 대답에 같은 쿼리 기반 구문을 사용합니다.

+1

내 쿼리의 메서드 구문 동일성. 그들은 정확히 동일하게 컴파일됩니다. 나는'let'이 읽기 쉽다고 생각하기 때문에 쿼리 문법을 선호합니다. –

+0

'let'이 필요할 때 나는 또한 쿼리 기반 문법을 선호한다. :) 그러나 예제는 메서드 기반의 것이므로 그렇게하지 않았다. – MarcinJuraszek

+0

+1은 원래 폼을 사용하여 쿼리를 생성한다. 나는 그 일을 할 수있을만큼 충분히 내 머리를 쓰지 못했습니다. –