A problem to solve with English expressions

Asked

Viewed 55 times

2

I did this, to return a list. It turns out to be an error, saying that there is no way to transform an anonymous expression into the past type (object).

public List<Liberacao> PegaLiberacao()
        {
            var lista = contexto.Liberacoes.Join(
                contexto.ItensLibs,
                t1 => t1.IdOrcamento,
                t2 => t2.IdOrcamento,
                (t1, t2) => new { t1, t2 })
                .Where(a => a.t1.IdOrcamento == a.t2.IdOrcamento)
                .Select(lib => new
                {
                    lib.t1.TipoVenda,
                    lib.t1.Vencimento,
                    lib.t1.Juros,
                    lib.t1.Entrada,
                    lib.t1.Acrescimo,
                    lib.t1.Desconto,
                    lib.t1.Mensagem,
                    lib.t1.DataLib,
                    lib.t1.Vendedor,
                    lib.t1.Cliente,
                    lib.t1.Filial,
                    lib.t2.Produto,
                    lib.t2.Qtde,
                    lib.t2.Unitario,
                    lib.t2.Custo,
                    lib.t2.CustoDiario,
                    lib.t2.UltCondicao,
                    lib.t2.Total
                }).ToList();

            return lista;
        }

And that’s the mistake, going back to my list: inserir a descrição da imagem aqui

EDIT1: This is my model:

public class Autoriza
    {
        InetContext contexto = new InetContext();
        Liberacao liberacao = new Liberacao();

        public List<Liberacao> PegaLiberacao()
        {
            var lista = contexto.Liberacoes.Join(
                contexto.ItensLibs,
                t1 => t1.IdOrcamento,
                t2 => t2.IdOrcamento,
                (t1, t2) => new { t1, t2 })
                .Where(a => a.t1.IdOrcamento == a.t2.IdOrcamento)
                .Select(lib => new Liberacao
                {
                    TipoVenda = lib.t1.TipoVenda,
                    Vencimento = lib.t1.Vencimento,
                    Juros = lib.t1.Juros,
                    Entrada = lib.t1.Entrada,
                    Acrescimo = lib.t1.Acrescimo,
                    Desconto = lib.t1.Desconto,
                    Mensagem = lib.t1.Mensagem,
                    DataLib = lib.t1.DataLib,
                    Vendedor = lib.t1.Vendedor,
                    Cliente = lib.t1.Cliente,
                    Filial = lib.t1.Filial
                }).ToList();

            return lista;
        }

        public List<ItensLib> PegaItensLib()
        {
            var lista = contexto.ItensLibs.Join(
                contexto.Liberacoes,
                t1 => t1.IdOrcamento,
                t2 => t2.IdOrcamento,
                (t1, t2) => new { t1, t2 })
                .Where(a => a.t1.IdOrcamento == a.t2.IdOrcamento)
                .Select(itens => new ItensLib
                {
                    Produto = itens.t1.Produto,
                    Qtde = itens.t1.Qtde,
                    Unitario = itens.t1.Unitario,
                    Custo = itens.t1.Custo,
                    CustoDiario = itens.t1.CustoDiario,
                    UltCondicao = itens.t1.UltCondicao,
                    Total = itens.t1.Total
                }).ToList();

            return lista;
        }
    }

Here it comes

[Table("LIBERACAO")]
    public class Liberacao
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Column("ID_LIBERACAO")]
        public int IdLiberacao { get; set; }
        [Column("FLAG_LIBERACAO")]
        public byte FlagLiberacao { get; set; }
        [Column("ID_ORCAMENTO")]
        public float IdOrcamento { get; set; }
        [Column("ID_VENDEDOR")]
        public int IdVendedor { get; set; }
        [Column("VENDEDOR")]
        public string Vendedor { get; set; }
        [Column("ID_FILIAL")]
        public int IdFilial { get; set; }
        [Column("FILIAL")]
        public string Filial { get; set; }
        [Column("DATALIB")]
        public float DataLib { get; set; }
        [Column("HORALIB")]
        public float HoraLib { get; set; }
        [Column("ID_CLIENTE")]
        public int IdCliente { get; set; }
        [Column("CLIENTE")]
        public string Cliente { get; set; }
        [Column("TIPO_VENDA")]
        public string TipoVenda { get; set; }
        [Column("JUROS")]
        public float Juros { get; set; }
        [Column("DESCONTO")]
        public float Desconto { get; set; }
        [Column("VENCIMENTO")]
        public float Vencimento { get; set; }
        [Column("ACRESCIMO")]
        public float Acrescimo { get; set; }
        [Column("ENTRADA")]
        public float Entrada { get; set; }
        [Column("PRAZO")]
        public float Prazo { get; set; }
        [Column("TOTAL_LIQUIDO")]
        public float TotalLiquido { get; set; }
        [Column("MIN_TOTAL")]
        public float MinTotal { get; set; }
        [Column("USUARIO")]
        public string Usuario { get; set; }
        [Column("CUSTODIARIO")]
        public decimal CustoDiario { get; set; }
        [Column("MAX_COMI")]
        public decimal MaxComi { get; set; }
        [Column("VALOR_COMI")]
        public decimal ValorComi { get; set; }
        [Column("NOVA_COMI")]
        public decimal NovaComi { get; set; }
        [Column("MENSSAGEM")]
        public string Mensagem { get; set; }
        [Column("Menssagem_RET")]
        public string MensagemRet { get; set; }
        [Column("DataRetorno")]
        public decimal DataRetorno { get; set; }
        [Column("HoraRetorno")]
        public decimal HoraRetorno { get; set; }
        [Column("TempoProcesso")]
        public decimal TempoPrecesso { get; set; }
        [Column("Tipo")]
        public int Tipo { get; set; }
        [Column("PROGRAMA")]
        public string Programa { get; set; }
        [Column("NOME_PC")]
        public string NomePc { get; set; }
        [Column("NOME_PROCEDURE")]
        public string NomeProcedure { get; set; }
        [Column("Perc_Juros_Total")]
        public decimal PercJurosTotal { get; set; }
        [Column("FLAG_CULTURAVENCIDA")]
        public byte FlagCulturaVencida { get; set; }
        [Column("CULTURA")]
        public string Cultura { get; set; }
        [Column("CULTURA_VCTO")]
        public int CulturaVcto { get; set; }
        [Column("FLAG_PRORROGADO")]
        public byte FlagProrrogado { get; set; }
        [Column("VALOR_PRORROGADO")]
        public decimal ValorProrrogado { get; set; }
        [Column("DIAS_ATRASO")]
        public int DiasAtrazo { get; set; }
        [Column("ID_VENDEDOR2")]
        public int IdVendedor2 { get; set; }
        [Column("VENDEDOR2")]
        public string Vendedor2 { get; set; }
        [Column("COMISSAO_VEND2")]
        public decimal ComissaoVend2 { get; set; }
        [Column("FLAG_COTACAO")]
        public byte FlagCotacao { get; set; }
        [Column("TipoVenda")]
        public string TipoVenda1 { get; set; }
        [Column("Flag_Receber_Atrasado")]
        public byte FlagReceberAtrazado { get; set; }
        [Column("Autorizou_Receber_Atrasado")]
        public string AutorizouReceberAtrazado { get; set; }

EDIT2: I switched to that shape and it worked

public IEnumerable<object> getAutoriza()
        {
            var lista = contexto.Liberacoes.Join(
                contexto.ItensLibs, lib => lib.IdOrcamento, itens => itens.IdOrcamento, (lib, itens) => new { lib, itens })
                .Where(a => a.lib.IdOrcamento == a.itens.IdOrcamento)
                .Select(libera => new
                {
                    libera.lib.TipoVenda,
                    libera.lib.Vencimento,
                    libera.lib.Juros,
                    libera.lib.Entrada,
                    libera.lib.Acrescimo,
                    libera.lib.Desconto,
                    libera.lib.Mensagem,
                    libera.lib.DataLib,
                    libera.lib.Vendedor,
                    libera.lib.Cliente,
                    libera.lib.Filial,
                    libera.itens.Produto,
                    libera.itens.Qtde,
                    libera.itens.Unitario,
                    libera.itens.Custo,
                    libera.itens.CustoDiario,
                    libera.itens.UltCondicao,
                    libera.itens.Total
                }).ToList();

            return lista;
        }

1 answer

1


Change the Select for

.Select(lib => new Liberacao
{
    TipoVenda = lib.t1.TipoVenda,
    // e assim por diante
}

Obviously this will only work if you really return a list of Liberacao.

  • The problem is that I have two entities (Release and Itenslib) and the new is only one (Release). As I put in select the other entity?

  • Like I said, the object has to be of the kind Liberacao, otherwise it makes no sense to try to return such a list.

  • Didn’t solve my problem. Gives this error: 1>C:\Labs\AutorizadorService\AutorizadorService\Models\Autoriza.cs(25,21,25,30): error CS0200: Property or indexer 'Liberacao.TipoVenda' cannot be assigned to -- it is read only&#xA; It weaves for all fields.

  • Well, I can’t guess what’s going on. Post the model I try to help.

  • No, young man. I need to see the model Liberacao

Browser other questions tagged

You are not signed in. Login or sign up in order to post.