none
Error_1_Cannot implicitly convert type 'System.Collections.Generic.List<>' to 'System.Collections.Generic.List<>'_ RRS feed

  • Pergunta

  • Olá
    Tenho uma lista declarada de Produto
    public List<Produto> Pro
            {
                get { return _pro; }
                set { _pro = value; }
            }

    Depois percorro uma gridview e busco os dados e jogo esses dados em uma lista de Itens da venda

        List<ItensVenda> itens = new List<ItensVenda>();
                for (int i = 0; i < gvProdutos.Rows.Count; i++)
                {
                    CheckBox ckSel = (CheckBox)gvProdutos.Rows[i].Cells[1].FindControl("ckSel");
                    if (ckSel.Checked)
                    {
                        ItensVenda iv = new ItensVenda
                        {
                            Produto = int.Parse((gvProdutos.Rows[i].Cells[0].Text)),
                            Quantidade = int.Parse(((TextBox)gvProdutos.Rows[i].Cells[3].FindControl("tbQt")).Text),
                            Valor = Convert.ToDecimal(gvProdutos.Rows[i].Cells[2].Text)
                        };
                        valor = Convert.ToDouble(gvProdutos.Rows[i].Cells[2].Text);
                        qtde = ((TextBox)gvProdutos.Rows[i].Cells[3].FindControl("tbQt")).Text;
                        subtotal = subtotal + valor * int.Parse(qtde);
                        itens.Add(iv);
                    }
                }

    Depois jogo todos os dados na classe Venda

          Venda ven = new Venda
                {
                    Alu_cod = alu_cod,
                    Ven_data = ven_data,
                    Pro = itens//Erro Aqui
                };

    Porém ao adicionar a lista de itens (itens) na lista de produtos (Prod), o seguinte erro acontece:

    Error 1 Cannot implicitly convert type 'System.Collections.Generic.List<Academia.CamadaNegocios.ItensVenda>' to 'System.Collections.Generic.List<Academia.CamadaNegocios.Produto>'
    Se as duas listas são do mesmo tipo, alguém saberia me dizer o porque do erro?


    Edinho

    terça-feira, 14 de maio de 2013 12:52

Respostas

  • Edinho,

    As duas listas não são do mesmo tipo, seu código acima deixa isso claro. Você tem uma classe chamada "Venda" cuja a propriedade "Pro" certamente é uma List<Produto>, porem a sua instancia "itens" é do tipo List<ItensVenda>.

    Teria como postar a estrutura destas duas classes para melhor entendimento ?

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    terça-feira, 14 de maio de 2013 13:43
  • Edinho,

    A sua classes deveria ter uma propriedade chamada ItensVenda, onde você deveria armazenar esta lista de ItensVenda, pois você já possui o id do produto na classe ItensVenda.

    Muda disso:

            private List<Produto> _pro;
    
            public List<Produto> Pro
            {
                get { return _pro; }
                set { _pro = value; }
            }

    Para isso:

      private List<ItensVenda> _itens;
    
            public List<ItensVenda> Itens
            {
                get { return _itens; }
                set { _itens = value; }
            }

    E depois atribua nela:

                Venda ven = new Venda
                {
                    Alu_cod = alu_cod,
                    Ven_data = ven_data,
                    Itens = itens
                };




    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    terça-feira, 14 de maio de 2013 19:55

Todas as Respostas

  • Edinho,

    As duas listas não são do mesmo tipo, seu código acima deixa isso claro. Você tem uma classe chamada "Venda" cuja a propriedade "Pro" certamente é uma List<Produto>, porem a sua instancia "itens" é do tipo List<ItensVenda>.

    Teria como postar a estrutura destas duas classes para melhor entendimento ?

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    terça-feira, 14 de maio de 2013 13:43
  • A classe vendas. Uma venda possui vários produtos, portanto declarei uma lista de produtos (private List<Produto> _pro;) que faz referencia a classe produto

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Academia.CamadaDados;

    namespace Academia.CamadaNegocios
    {
        public class Venda
        {
            private int _ven_cod;

            public int Ven_cod
            {
                get { return _ven_cod; }
                set { _ven_cod = value; }
            }
            private int _alu_cod;

            public int Alu_cod
            {
                get { return _alu_cod; }
                set { _alu_cod = value; }
            }
            private DateTime _ven_data;

            public DateTime Ven_data
            {
                get { return _ven_data; }
                set { _ven_data = value; }
            }

            private int _qtde;

            public int Qtde
            {
                get { return _qtde; }
                set { _qtde = value; }
            }
            private double _valor;

            public double Valor
            {
                get { return _valor; }
                set { _valor = value; }
            }

            public Venda() { }

            public Venda(int alu_cod, DateTime ven_data)
            {
                _alu_cod = alu_cod;
                _ven_data = ven_data;
            }

            public int AdicionarVen(out int max)
            {
                VendaBD venBD = new VendaBD();
                return venBD.AdicionarVen(this, out max);
            }

            public int AtualizarVen()
            {
                VendaBD venBD = new VendaBD();
                return venBD.AtualizarVen(this);
            }

            public int DeletarVen(int codigo)
            {
                VendaBD venBD = new VendaBD();
                return venBD.DeletarVen(codigo);

            }

            public List<Venda> ListarVen()
            {
                VendaBD venBD = new VendaBD();
                return venBD.ListarVen();
            }

            public Venda SelecionarVen(int codigo)
            {
                VendaBD venBD = new VendaBD();
                return venBD.SelecionarVen(codigo);
            }

            private List<Produto> _pro;

            public List<Produto> Pro
            {
                get { return _pro; }
                set { _pro = value; }
            }
        }
    }

    A classe ItensVenda

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    namespace Academia.CamadaNegocios
    {
        public class ItensVenda
        {
            public int Produto { get; set; }
            public int Quantidade { get; set; }
            public Decimal Valor { get; set; }
        }
    }


    Edinho

    terça-feira, 14 de maio de 2013 18:09
  • Edinho,

    A sua classes deveria ter uma propriedade chamada ItensVenda, onde você deveria armazenar esta lista de ItensVenda, pois você já possui o id do produto na classe ItensVenda.

    Muda disso:

            private List<Produto> _pro;
    
            public List<Produto> Pro
            {
                get { return _pro; }
                set { _pro = value; }
            }

    Para isso:

      private List<ItensVenda> _itens;
    
            public List<ItensVenda> Itens
            {
                get { return _itens; }
                set { _itens = value; }
            }

    E depois atribua nela:

                Venda ven = new Venda
                {
                    Alu_cod = alu_cod,
                    Ven_data = ven_data,
                    Itens = itens
                };




    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    terça-feira, 14 de maio de 2013 19:55
  • Cara, que marcação. Valeu Vitor, matou a charada.
    Foi só mudar o trecho: private List<Produto> _pro;

            public List<Produto> Pro
            {
                get { return _pro; }
                set { _pro = value; }
            }

    Para: private List<ItensVenda> _pro;

            public List<ItensVenda> Pro
            {
                get { return _pro; }
                set { _pro = value; }
            }


    Edinho

    quarta-feira, 15 de maio de 2013 11:12