Je voudrais mettre en place une liste multidimensionnelle. Pour référence, je travaille sur un analyseur de playlist.
J'ai un fichier / liste de fichiers, que mon programme enregistre dans une liste standard. Une ligne du fichier dans chaque entrée de liste.
J'analyse ensuite la liste avec des expressions régulières pour trouver des lignes spécifiques. Certaines des données / résultats des lignes doivent être mis dans une nouvelle liste multidimensionnelle ; puisque je ne sais pas combien de résultats / données je vais finir avec, je ne peux pas utiliser un tableau multidimensionnel.
Voici les données que je souhaite insérer:
liste ( [0] => Liste ( [0] => ID de piste [1] => Nom [2] => Artiste [3] => Album [4] => Nombre de lectures [5] => Ignorer le compte ) [1] => Liste ( Etc....
Exemple réel:
liste ( [0] => Liste ( [0] => 2349 [1] => Le meilleur moment de votre vie [2] => Daft Punk [3] => Humain après tout [4] => 3 [5] => 2 ) [1] => Liste (
Donc oui, mlist [0] [0] obtiendrait TrackID de la chanson 1, mlist [1] [0] de la chanson 2 etc.
Mais j'ai d'énormes problèmes pour créer une liste multidimensionnelle. Jusqu'à présent, je suis venu avec
List<List<string>> matrix = new List<List<string>>();
Mais je n'ai pas vraiment eu beaucoup plus de progrès :(
Track
cours. Il sera beaucoup plus facile de comprendre / maintenir le code. Si vous représentez une piste sous la forme d'une liste de chaînes, les indéces dans lesquelles vous stockez un attribut particulier devront être synchronisées sur toutes les instances où vous essayez d'accéder aux informations de piste. Cela deviendra fastidieux à mettre en œuvre à chaque fois et impossible à déboguer. S'il vous plaît, pour votre propre bien, regardez dans les classes. :)Comme Jon Skeet l'a mentionné, vous pouvez le faire avec un
List<Track>
. La classe Track ressemblerait à ceci:Et pour créer une liste de pistes comme
List<Track>
vous le faites simplement:L'ajout de pistes peut être aussi simple que ceci:
L'accès aux pistes peut se faire avec l'opérateur d'indexation:
J'espère que cela t'aides.
la source
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 } }
C'est le moyen le plus simple que j'ai trouvé pour le faire.
Récupérer des valeurs est encore plus simple
la source
un autre travail autour duquel j'ai utilisé était ...
La bibliothèque sur laquelle je travaille a une structure de classe très formelle et je ne veux pas de contenu supplémentaire pour le privilège d'enregistrer deux entrées «liées».
Cela dépend du programmeur qui n'entre qu'un tableau de 2 éléments, mais comme ce n'est pas un élément commun, je pense que cela fonctionne.
la source
Vous pouvez également ... faire de cette manière,
si vous avez besoin d'un autre élément (enfant), créez une nouvelle instance de child,
la source
Voici comment créer une liste en 2 dimensions
Soyez conscient du danger d'accéder à un emplacement qui n'est pas peuplé.
la source
J'ai utilisé:
cela équivaut à:
la source
Vous pouvez également utiliser DataTable - vous pouvez définir ensuite le nombre de colonnes et leurs types, puis ajouter des lignes http://www.dotnetperls.com/datatable
la source
List<Track>
approche et utiliser aBindingSource
, en ajoutant simplement une DataSource à votreDataGridView
typeTrack
pour prendre en charge les classes fortement typées dans le code et une visualisation facile à configurer des pistes dans la vue de la grille de données.Voici un petit quelque chose que j'ai fait il y a quelque temps pour un moteur de jeu sur lequel je travaillais. Il a été utilisé comme support de variable d'objet local. Fondamentalement, vous l'utilisez comme une liste normale, mais elle contient la valeur à la position du nom de la chaîne (ou de l'ID). Un peu de modification, et vous aurez votre liste 2D.
la source