2017-06-14 7 views
1

besoin de récupérer un ensemble de valeurs de la chaîne ci-dessous de l'échantillon basé sur une prioritérécupérer les valeurs d'une chaîne de csv en fonction de la priorité en utilisant C#

string sample="|NR|ABC,777,666,hhh|NR|DEF,444,,|NR|GHI,888,222," 

|NR| désigne nouvelle ligne

string[] priority={"DEF","GHI","ABC","JKL","MNO"} 

J'ai besoin pour vérifier la première valeur dans Priority avec l'exemple de chaîne et extraire des valeurs non vides et si une valeur est vide, il faut vérifier la deuxième priorité et récupérer la valeur correspondante de l'exemple de chaîne

Résultat des valeurs de tableau attendues: 444,222,hhh

DEF valeurs sont cochés au départ, 444 est récupéré et le repos sont vides, puis GHI priorité suivante est cochée, 222 est récupéré. Comme la troisième valeur est vide, ABC avec la priorité suivante est vérifiée et « hhh » est ren- voyées

Veuillez me aider avec cette solution en code C#

+0

Qu'avez-vous essayé? Nous ne faisons pas votre travail, vous devez fournir vos propres moyens. – HimBromBeere

Répondre

1
  • première division de votre chaîne avec |NR| et ,
  • puis trier le tableau par le premier élément - en déterminant son indice de la matrice de priorité
  • sélectionnez enfin le dernier élément dans le tableau de résultat

Code:

string sample="|NR|ABC,777,666,hhh|NR|DEF,444,,|NR|GHI,888,222,"; 
string[] priority = { "DEF", "GHI", "ABC", "JKL", "MNO" }; 
string[] result = sample.Split(new[] { "|NR|" }, StringSplitOptions.RemoveEmptyEntries) 
         .Select(x => x.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries)) 
         .OrderBy(x => Array.IndexOf(priority,x.First())) 
         .Select(x => x.Last()) 
         .ToArray(); //444,222,hhh