7
votes

Créer une nouvelle matrice en utilisant le contenu d'autres tableaux en C #

J'aimerais connaître la manière la plus efficace de créer de nouveaux tableaux à partir du contenu d'autres tableaux.

J'ai plusieurs réseaux de chaînes du type: xxx

Il serait possible de créer maintenant une nouvelle gamme de chaîne de manière similaire à celle-ci? xxx

qui contiendrait toutes les cordes incluses dans les autres tableaux.


2 commentaires

Je pense que vous devez regarder un mécanisme de stockage différent. Il est peut-être temps de représenter ces données dans des tables SQL. Il sera plus facile de gérer et de faire un sens plus intuitif. Avez-vous déjà travaillé avec SQL?


J'utilise ces tableaux pour faire des exclusions dans l'analyse des données et je voudrais ajouter à mon outil un bouton de paramètres pour modifier les exclusions ainsi que d'autres choses, vous me recommandez une petite base de données pour stocker le réglage? Ou ce serait mieux un fichier XML pour cela? Merci pour le commentaire.


5 Réponses :


6
votes

Vous pouvez concatez deux tableaux.

Dictionary<string, string[]> Asia = new Dictionary<string, string[]>();


0 commentaires

10
votes
string[] ASIA = new []{ Taiwan, Vietnam, Korea, China, Japan}
                      .SelectMany(s => s)  // not entirely sure what these abbreviations are...
                      .ToArray();

1 commentaires

Pour ceux qui ne connaissent pas SelectMany .



8
votes

Vous pouvez prendre votre tentative, ce qui génère un tableau de tableaux, puis l'aplatit à l'aide de SelectMany code> dans un tableau de chaînes.

public readonly string[] ASIA = new[] { Taiwan, Vietnam, Korea, China, Japan}
    .SelectMany(countryCode => countryCode )
    .ToArray();


0 commentaires

0
votes

Vous pouvez également utiliser l'agrégat et l'union pour y accomplir si vous ne voulez que des valeurs uniques dans le tableau de chaînes xxx


1 commentaires

Ceci est dramatiquement moins efficace que les autres approches indiquées. Vous re-construisez le HASHSET interne de chaque ensemble pour chaque étape de l'agrégation. S'il est important d'avoir des valeurs uniques, vous pouvez simplement coller un appel distinct à la fin d'un SelectMany et il fera la même chose, soyez plus clair pour le lecteur et exécutera beaucoup mieux. En outre, votre casser ne fait rien de significatif.