2012-12-05 156 views
0

我想做一個子查詢使用LINQ子選擇與LINQ

我有什麼,但不正確的

var diretores = from item in db.San_PropostaConversa 
       join sc in db.San_Credenciada 
        on (item.Credenciada_Id) equals sc.Credenciada_Id 
       join sp in db.San_Proposta 
        on (item.Proposta_Id) equals sp.Proposta_Id 
       join si in db.San_Imovel 
        on (sp.Imovel_Id) equals si.Imovel_Id 
       join su in db.San_Usuario 
        on (item.Usuario_Id) equals su.Usuario_Id 
       where item.Proposta_Id == proposta 
       orderby item.DataHora descending 
       select new 
       { 
        sc.Apelido, 
        su.NomeCompleto, 
        su.DescricaoCargo1, 
        item.Comentario, 
        item.DataHora, 
        sp.Imovel_Id, 
        CredenciadaCaptadora_Id = si.Credenciada_Id, 
        item.Credenciada_Id, 
        (from item2 in db.San_Usuario 
        where item2.Cargo_Id == 9 
         && item2.Excluido == 0 
         && item2.Credenciada_Id == item.Credenciada_Id 
        select item2.Email) 
       }; 

在我SELECT發言,我想恢復電子郵件列以下一些條件是在我的WHERE條款中指定。

錯誤

無效匿名類型成員聲明。匿名類型的成員必須 與成員分配,簡單名稱或成員訪問

+0

,什麼是阻止你這樣做?你嘗試過什麼嗎? – usr

+0

這就是我試過的。 –

+0

錯誤消息告訴你:「匿名類型成員必須用成員賦值,簡單名稱或成員訪問來聲明」。這是您的正確原因和解決方案。 – usr

回答

2

你有linq表達式中的兩個問題:

  1. 您需要將子查詢的結果分配給新匿名類型的成員。
  2. 我想你只想選擇1個電子郵件與您的子查詢,所以你需要使用Single()/SingleOrDefault()First()/FirstOrDefault()

試試這個:

var diretores = from item in db.San_PropostaConversa 
       join sc in db.San_Credenciada 
        on item.Credenciada_Id equals sc.Credenciada_Id 
       join sp in db.San_Proposta 
        on (item.Proposta_Id) equals sp.Proposta_Id 
       join si in db.San_Imovel 
        on sp.Imovel_Id equals si.Imovel_Id 
       join su in db.San_Usuario 
        on item.Usuario_Id equals su.Usuario_Id 
       where item.Proposta_Id == proposta 
       orderby item.DataHora descending 
       select new 
       { 
        Apelido = sc.Apelido, 
        NomeCompleto = su.NomeCompleto, 
        DescricaoCargo1 = su.DescricaoCargo1, 
        Comentario = item.Comentario, 
        DataHora = item.DataHora, 
        Imovel_Id = sp.Imovel_Id, 
        CredenciadaCaptadora_Id = si.Credenciada_Id, 
        Credenciada_Id = item.Credenciada_Id, 
        Email = (from item2 in db.San_Usuario 
          where item2.Cargo_Id == 9 
           && item2.Excluido == 0 
           && item2.Credenciada_Id == item.Credenciada_Id 
          select item2.Email).FirstOrDefault() 
       }; 
0

聲明晴發生了不可分配變量此錯誤, 請試試這個 它會幫助你

var diretores = from item in db.San_PropostaConversa 
         join sc in db.San_Credenciada 
         on (item.Credenciada_Id) equals sc.Credenciada_Id 
         join sp in db.San_Proposta 
         on (item.Proposta_Id) equals sp.Proposta_Id 
         join si in db.San_Imovel 
         on (sp.Imovel_Id) equals si.Imovel_Id 
         join su in db.San_Usuario 
         on (item.Usuario_Id) equals su.Usuario_Id 
         where item.Proposta_Id == proposta 
         orderby item.DataHora descending 
         select new 
         { 
         Apelido=sc.Apelido, 
         NomeCompleto=su.NomeCompleto, 
         DescricaoCargo1=su.DescricaoCargo1, 
         Comentario=item.Comentario, 
         DataHora=item.DataHora, 
         Imovel_Id=sp.Imovel_Id, 
          CredenciadaCaptadora_Id = si.Credenciada_Id, 
         Credenciada_Id= item.Credenciada_Id, 
          result= (from item2 in db.San_Usuario 
           where item2.Cargo_Id == 9 
           && item2.Excluido == 0 
           && item2.Credenciada_Id == item.Credenciada_Id 
           select item2.Email) 
         };