Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LegolasDBA

ArrayList

Recommended Posts

Olá,

 

Estou com um problema que não consigo achar uma solução.

 

Tenho um método que recebe como parâmetro um ArrayList com N itens e que tem que me retornar um Array de Strings com no máximo X itens concatenados com vírgula.

 

Por exemplo:

 

Recebo um ArrayList com 5 itens, porém, meu limite(CONSTANTE) para cada Array de string é 2, e nesse caso queria que ficasse desta forma:

 

ENTRADA

arrayList{"1234","2234","1334","1244","4321"};

 

SAÍDA

ret[0]={",1234,2234,"};

ret[1]={",1334,1244,"};

ret[2]={",4321,"};

 

Meu método está da seguinte forma atualmente :

 

 int constante = 2;
 int n = Convert.ToInt32(decimal.Truncate(al.Count/constante));

if((al.Count % constante) != 0)
   n = n+1;

int j = 0;
 string[] ret = new string[]{};

for (int i = 0; i < al.Count; i++)
 {
  if (i == n)
  {
    ret[j] += ",";
    j++;
  }
   ret[j] += "," + al[i].ToString();
 }

return ret;
Eu verifico a quantidade de itens dividido pelo número máximo de itens para definir quantos arrays de string eu terei, ou seja, tem que ser feito dinamicamente.

 

 

O problema é que o Array de strings me obriga a definir um tamanho.

 

Eu poderia fazer utilizando LINQ? de que forma?

Se existe outra forma, como seria?

 

Estou necessitado de uma solução, pois, já procurei MUITO no google mas não acho nada que atenda ao que preciso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar outro arraylist, ou também ao invés de criar arrays de strings com tamanhos definidos, você faça um for e crie arrays com os valores já setados no array de strings, depois disso tudo você vai precisar adicionar esses arrays em um arraylist.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver !

 

Adicionei numa string mesmo e quando chega no limite(count == constante) que eu defino, ele chama meu método da BLL passando essa string como parâmetro, tudo dentro do FOR. Quando o valor é abaixo do limite eu tenho um ELSE que deixa ele adicionando até ser o último registro do FOR e chama também o meu método da BLL passando esses valores restantes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.