2009-11-06 6 views
0

J'essaie de comprendre quel type de structure ou de conteneur je devrais utiliser pour un projet rapide. Je dois avoir un nombre inconnu de jeux qui seront entrés à partir de l'interface graphique (chacun aura un nom, une description, un identifiant unique, une priorité et un booléen pour inclus). Chaque ensemble aura un nombre inconnu de chaînes ajoutées (également à partir de l'interface graphique). Une fois que toutes les informations ont été entrées, elles seront écrites dans des fichiers texte où le nom de l'ensemble est le nom du dossier et un fichier texte dans ce dossier contiendra toutes les chaînes associées à cet ensemble.Quel type de structure/conteneur utiliseriez-vous dans cette instance?

J'ai essayé de créer un ensemble de données avec deux tables liées, mais je n'arrivais pas à ajouter par programme les lignes aux tables et à obtenir les ensembles à afficher dans ma vue de données. Maintenant, je suis de retour à essayer de trouver un autre moyen de sauvegarder les ensembles en mémoire et les afficher sur l'interface graphique avant de les enregistrer sur le disque.

Que voulez-vous utiliser?

+0

Par "set", voulez-vous dire que la structure de données doit avoir les propriétés mathématiques d'un ensemble? C'est "non ordonné", "pas de doublons" et ainsi de suite? Ou peut-il s'agir simplement d'une liste, qui est ordonnée et peut avoir des doublons? –

+0

L'ensemble est commandé, sans doublon. Les chaînes ne sont pas commandées. – Theresa

Répondre

1

Que diriez-vous quelque chose comme ça ...

public class TheresasSet { 
    public string Name { get; set } 
    public string Description { get; set; } 
    public int ID { get; set; } 
    public int Priority { get; set; } 
    public bool Included { get; set; } 
    public List<string> StringData { get; private set; } 

    public TheresasSet() { 
     StringData = new List<string>(); 
    } 
} 
2

Je voudrais simplement utiliser une classe:

public class Item 
    { 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public int ID { get; set; } 
     public int Priority { get; set; } 
     public bool Included { get; set; } 
     public IList<string> Data { get; set; } 
    } 

pour l'interface utilisateur que vous auriez un IList<Item>

EDIT:

S'il doit y avoir pas de doublons vous pouvez mettre le jeu dans un dictionnaire où la clé est le champ ID et la valeur est l'objet Item. Cette liste ne sera pas commandé, mais vous pouvez écrire votre propre méthode de tri:

IDictionary<int, Item> listOfData; 
0

En général, je vous recommande d'utiliser des classes, struct doit être utilisé lorsque la taille de l'instance est inférieure à 16 octets, ce qui ce ne sera pas . Rien de plus gros et vous commencerez à souffrir d'un ralentissement mineur de la performance.

Si vous ne parvenez pas à afficher des informations, vous pouvez remplacer la méthode ToString() ou fournir plus de détails sur ce qui ne fonctionne pas dans DataGridView.

+0

J'ai fini par retourner à l'option DataSet/Datagridviews. J'ai eu ce travail. – Theresa

0

Vous pouvez:

  1. Créer une classe nommée par exemple Set, qui a le nom, la description, identifiant unique, la priorité et booléenne pour inclus comme propriétés.
  2. Ajoutez une propriété supplémentaire à la classe, de type List<string>, pour stocker les chaînes ajoutées de façon dinamique.
  3. Avoir un List<Set> pour stocker les ensembles.
0

Un objet de collection.

Questions connexes