Usuário com melhor resposta
Error_1_Cannot implicitly convert type 'System.Collections.Generic.List<>' to 'System.Collections.Generic.List<>'_

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
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/- Marcado como Resposta Edinho Rodrigues quarta-feira, 15 de maio de 2013 11:10
-
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/- Editado Vitor Mendes terça-feira, 14 de maio de 2013 19:56
- Marcado como Resposta Edinho Rodrigues quarta-feira, 15 de maio de 2013 11:12
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/- Marcado como Resposta Edinho Rodrigues quarta-feira, 15 de maio de 2013 11:10
-
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
-
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/- Editado Vitor Mendes terça-feira, 14 de maio de 2013 19:56
- Marcado como Resposta Edinho Rodrigues quarta-feira, 15 de maio de 2013 11:12
-
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