0

我想用 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条款中指定的一些条件之后恢复一个电子邮件列。

错误

无效的匿名类型成员声明符。必须使用成员分配、简单名称或成员访问来声明匿名类型成员

4

2 回答 2

2

您的 linq 表达式中有 2 个问题:

  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()
                };
于 2012-12-29T14:53:31.770 回答
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)
                        };
于 2012-12-29T14:18:21.413 回答