RECUPERAR DADOS DE ARRAYLIST DUAS DIMENSOES.

LUIS.HERRERA 03/07/2013 16:53:29
#425522
Boa tarde.

Criei um ArrayList com (ID, Nome) e passo ele ao DAL para gravar no banco. O problema é que não consigo pegar cada informação separadamente para passar ao parâmetro do SQL. O ArrayList usou um Structure para ser montado assim:

No início do Formulário
public struct struturaPermissoes 
{
public int IDPerfil;
public string NomePermissao;
}


Na Classe DAL
public bool Incluir(ArrayList myPerfilPermissao)
{
bool bPermissaoExiste = false;
for (int i = 0; i < myPerfilPermissao.Count; i++)
{
struturaPermissoes myStruturaPermissao = new struturaPermissoes();
[txt-color=#e80000]myStruturaPermissao = ((struturaPermissoes)myPerfilPermissao[i]);[/txt-color]
bPermissaoExiste = JaExiste(myStruturaPermissao.IDPerfil, myStruturaPermissao.NomePermissao.ToLower());
if (bPermissaoExiste == false)
{
Dados.AbrirConexao();

// Não encontrou então inclui o novo registro
string sql = [Ô]INSERT INTO PERFIL_PERMISSAO (IDPERFIL,PERMISSAO) VALUES (@IDPERFIL,@PERMISSAO); [Ô]
+ [Ô]SELECT CAST(scope_identity() AS int)[Ô];

SqlCommand cmd = new SqlCommand(sql, Dados.cn);
cmd.Parameters.Add([Ô]@IDPERFIL[Ô], SqlDbType.Int);
cmd.Parameters[[Ô]@IDPERFIL[Ô]].Value = myStruturaPermissao.IDPerfil;
cmd.Parameters.Add([Ô]@PERMISSAO[Ô], SqlDbType.NVarChar);
cmd.Parameters[[Ô]@PERMISSAO[Ô]].Value = myStruturaPermissao.NomePermissao.ToLower();
cmd.ExecuteScalar();
}
}
}


Na linha vermelha dá erro dizendo que conversão não é permitida.
Tentei assim e deu erro também.
myStruturaPermissao = myPerfilPermissao[i];

Tenho que passar os dois valores separadamente ao método que checa se o registro já existe e depois para incluir nos parâmetros de gravar.

Alguém pode ajudar?
JABA 03/07/2013 17:08:39
#425528
Não é possivel converter arraylist para struct. Na verdade, você tem que percorrer o arraylist e preencher sua estrutura manualmente.
KERPLUNK 03/07/2013 17:21:01
#425530
Resposta escolhida
Porque usar ArrayList e Structure? Porque não um List<T> e uma classe?
LUIS.HERRERA 04/07/2013 10:30:48
#425561
Bem fiz com ArrayList porque a maioria dos exemplos na Web usam ele e como havia dois tipos de dados Int e String, achei que seria o correto, mas com o uso da entidade, isso não é problema.

Fiz a mudança como sugerido pelo Kerplunk e funcionou perfeitamente.

Obrigado.
Tópico encerrado , respostas não são mais permitidas