2012-04-23 16 views
0

filterTypeをGetPeronMemberDTOに渡したいと思います。値を関数に渡す

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) 
      } 
+0

'filterItems'と' searchParamDTO'とは何ですか?何が動作しないのですか?例外がありますか? –

+0

'GetFilterType'と' GetPeronMemberDTO'は何を返しますか? – Arion

+0

作業環境についてもう少し詳しく説明してください。 – HW90

答えて

4

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), 
      }) 

またはアンダースAbelsの答えのように、クエリベースの構文を使用:あなたは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

+1

これは、私のクエリと同等のメソッド構文です。それらはまったく同じようにコンパイルされます。私は 'let'は読むのが簡単だと思うので、私はクエリの構文を好む理由です。 –

+0

'let'が必要なときには、私はクエリーベースの構文も好きです:)しかし、この例はメソッドベースのものでしたので、そのままにしました:) – MarcinJuraszek

+0

+1元のフォームを使ってクエリを作成します。私は本当にそれの周りに頭を上げたことはありませんでした。 –