93 votes

Sont 2 dimensions Listes possible en c#?

J'aimerais configurer un multidimensionnelle de la liste. Pour référence, je suis en train de travailler sur une liste de lecture de l'analyseur.

J'ai un dossier/fichier-liste, qui mon programme enregistre dans une liste standard. Une ligne du fichier dans chaque entrée de la liste.

J'analyse ensuite la liste régulière des expressions à trouver des lignes spécifiques. Certaines des données/résultats de l'lignes doit être mis dans un nouveau multidimensionnelle de la liste; car je ne sais pas combien de résultats/données, je vais, je ne peux pas utiliser un tableau multidimensionnel.

Voici les données que je veux insérer:

Liste
(
 [0] => Liste
(
 [0] => Track ID
 [1] => Nom de
 [2] => Artiste
 [3] => Album
 [4] => Nombre De Lecture
 [5] => Sauter Le Comte

)
 [1] => Liste
(
Et ainsi de suite....

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], serait d'obtenir TrackID de chanson 1, mlist[0][0] à partir de la chanson 2 etc.

Mais j'ai d'énormes problèmes de la création d'un multidimensionnelle de la liste. Jusqu'à présent, j'en suis venu avec

List<List<string>> matrix = new List<List<string>>();

Mais je n'ai pas vraiment eu beaucoup plus de progrès :(

Toute aide?

145voto

Jon Skeet Points 692016

Eh bien, vous certainement pouvez utiliser un List<List<string>> où vous seriez alors écrire:

List<string> track = new List<string>();
track.Add("2349");
track.Add("The Prime Time of Your Life");
// etc
matrix.Add(track);

Mais pourquoi voudriez-vous faire cela au lieu de construire votre propre classe pour représenter une piste, avec Track ID, Nom, Artiste, Album, nombre de lecture et Passez le Comte propriétés? Alors juste un List<Track>.

105voto

Spoike Points 32082

Comme Jon Skeet mentionné que vous pouvez le faire avec un List<Track> à la place. La Piste de la classe ressemblerait à quelque chose comme ceci:

public class Track {
    public int TrackID { get; set; }
    public string Name { get; set; }
    public string Artist { get; set; }
    public string Album { get; set; }
    public int PlayCount { get; set; }
    public int SkipCount { get; set; }
}

Et pour créer une liste de pistes en tant que List<Track> il vous suffit de faire ceci:

var trackList = new List<Track>();

L'ajout de pistes peut être aussi simple que cela:

trackList.add( new Track {
    TrackID = 1234,
    Name = "I'm Gonna Be (500 Miles)",
    Artist = "The Proclaimers",
    Album = "Finest",
    PlayCount = 10,
    SkipCount = 1
});

Accéder aux pistes peut être fait avec l'opérateur d'indexation:

Track firstTrack = trackList[0];

Espérons que cette aide.

35voto

Jordan LaPrise Points 111

C'est la façon la plus simple que j'ai trouvé pour le faire.

List<List<String>> matrix= new List<List<String>>(); //Creates new nested List
matrix.Add(new List<String>()); //Adds new sub List
matrix[0].Add("2349"); //Add values to the sub List at index 0
matrix[0].Add("The Prime of Your Life");
matrix[0].Add("Daft Punk");
matrix[0].Add("Human After All");
matrix[0].Add("3");
matrix[0].Add("2");

Pour récupérer des valeurs est encore plus facile

string title = matrix[0][1]; //Retrieve value at index 1 from sub List at index 0

13voto

paul jamison Points 51

un autre travail autour de laquelle j'ai utilisé a été...

List<int []> itemIDs = new List<int[]>();

itemIDs.Add( new int[2] { 101, 202 } );

La bibliothèque, je suis en train de travailler sur une très formel de la structure de la classe et je n'ai pas wan pas extra trucs là effectivement pour le privilège d'enregistrer deux "connexes" ints.

S'appuie sur le programmeur en tapant seulement 2 de l'élément de tableau mais comme ce n'est pas un élément commun, je pense qu'il fonctionne.

1voto

SoIAS Points 11

J'ai utilisé:

List<List<String>> List1 = new List<List<String>>
var List<int> = new List<int>();
List.add("Test");
List.add("Test2");
List1.add(List);
var List<int> = new List<int>();
List.add("Test3");
List1.add(List);

qui est égal à:

List1
(
[0] => List2 // List1[0][x]
    (
        [0] => Test  // List[0][0] etc.
        [1] => Test2

    )
[1] => List2
    (
        [0] => Test3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X