Eu gostaria de criar uma lista multidimensional. Para referência, estou trabalhando em um analisador de lista de reprodução.
Eu tenho um arquivo / lista de arquivos, que meu programa salva em uma lista padrão. Uma linha do arquivo em cada entrada da lista.
Em seguida, analiso a lista com expressões regulares para encontrar linhas específicas. Alguns dos dados / resultados das linhas precisam ser colocados em uma nova lista multidimensional ; como não sei com quantos resultados / dados vou acabar, não posso usar um array multidimensional.
Aqui estão os dados que desejo inserir:
Lista ( [0] => Lista ( [0] => ID da faixa [1] => Nome [2] => Artista [3] => Álbum [4] => Contagem de reprodução [5] => Contagem de pulos ) [1] => Lista ( E assim por diante....
Exemplo real:
Lista ( [0] => Lista ( [0] => 2349 [1] => O melhor momento da sua vida [2] => Daft Punk [3] => Humano Afinal [4] => 3 [5] => 2 ) [1] => Lista (
Então, sim, mlist [0] [0] obteria TrackID da música 1, mlist [1] [0] da música 2 etc.
Mas estou tendo grandes problemas para criar uma lista multidimensional. Até agora eu vim com
List<List<string>> matrix = new List<List<string>>();
Mas eu realmente não tive muito progresso :(
Track
aula. Será muito mais fácil entender / manter o código. Se você representar uma trilha como uma lista de strings, então os indeces onde você armazena um determinado atributo terão que ser sincronizados em todas as instâncias onde você tenta acessar as informações da trilha. Será tedioso para implementar todas as vezes e impossível de depurar. Por favor, para seu próprio bem, analise as classes. :)Como Jon Skeet mencionou, você pode fazer isso com um
List<Track>
. A classe Track seria mais ou menos assim:E para criar uma lista de trilhas como um,
List<Track>
basta fazer o seguinte:Adicionar faixas pode ser tão simples quanto isto:
O acesso às faixas pode ser feito com o operador de indexação:
Espero que isto ajude.
fonte
for(i=0;i< length; i++) { for(j=0;j<length2;j++) {// what should be written here to get the values from a 2d array // to this 2d list } }
Esta é a maneira mais fácil que encontrei de fazer isso.
Recuperar valores é ainda mais fácil
fonte
outro trabalho em torno do qual usei foi ...
A biblioteca na qual estou trabalhando tem uma estrutura de classes muito formal e eu não queria material extra lá para ter o privilégio de gravar dois ints 'relacionados'.
Depende do programador inserir apenas uma matriz de 2 itens, mas como não é um item comum, acho que funciona.
fonte
Você também pode ... fazer desta forma,
se você precisar de outro item (filho), crie uma nova instância de filho,
fonte
Aqui está como fazer uma lista bidimensional
Esteja ciente do perigo de acessar um local não povoado.
fonte
Eu usei:
isso é igual a:
fonte
Você também pode usar DataTable - você pode definir o número de colunas e seus tipos e, em seguida, adicionar linhas http://www.dotnetperls.com/datatable
fonte
List<Track>
abordagem e usar umBindingSource
, simplesmente adicionando um DataSource ao seu,DataGridView
do tipoTrack
para suportar classes fortemente tipadas no código e fácil de configurar a visualização das trilhas dentro da visão da grade de dados.Aqui está uma coisinha que fiz um tempo atrás para um motor de jogo em que estava trabalhando. Foi usado como um portador de variável de objeto local. Basicamente, você a usa como uma lista normal, mas ela mantém o valor na posição do nome da string (ou ID). Uma pequena modificação e você terá sua lista 2D.
fonte