1
votes

Comment retourner une sous-chaîne de résultats linq

Disons que j'ai une liste de chaînes:

resultList = originalList.FindAll(o => o.StartsWith("XX")));

Je veux utiliser linq pour sélectionner et renvoyer une liste avec {"one", "two"} code >.

si je fais par exemple

originalList = { "XX.one", "XX.two", "YY.three" }

J'obtiendrai resultList = {"XX.one", "XX.two"} mais ce que je veux, c'est resultList = {"one", "two"}

Un moyen de résoudre ce problème?

EDIT: Merci pour tous ceux qui ont répondu, j'ai choisi la fonction split de @ er-mfahhgk car elle fait le minimum de manipulation et ne dépend pas de la taille du préfixe.


3 commentaires

La liste d'origine pourrait-elle contenir XX. ? XX ? XX.XX ?


La liste a toujours le point ".". Il peut donc contenir XX.XX mais pas XX simplement


Salut @mjwills non. C'est une entrée contrôlée. Ce sera toujours XX. ou YY. etc ... Le "quelque chose" existera toujours


3 Réponses :


1
votes

Vous pouvez essayer ceci:

resultList = originalList.Where(o => o.StartsWith("XX"))
                         .Select(x=>x.Substring(3))
                         .ToList();

(modifié pour corriger le libellé de la sous-chaîne)


1 commentaires

Je ne sais pas pourquoi quelqu'un voterait contre la réponse (ce qui fonctionne). Vous n'avez qu'une faute de frappe ici (Substrting au lieu de Substring)



2
votes
result = originalList.Where(o => o.StartsWith("XX"))
                         .Select(x=>x.Replace("XX.,""))
                         .ToList();

0 commentaires

3
votes

Vous pouvez utiliser SelectWith votre chaîne souhaitée, puis en utilisant la fonction Split sur Dot (. ), vous pouvez sélectionner la deuxième partie comme XXX

Et enfin votre sortie sera,

foreach (var item in resultList)
{
    Console.WriteLine(item);
}

Console.ReadLine();

Sortie:

entrez description de l'image ici


1 commentaires

Une des raisons pour lesquelles je pense que certaines des autres réponses sont préférables est que cette réponse repose sur le fait qu'il n'y a qu'un seul . dans la chaîne. Certaines des autres réponses n'ont pas cette limitation.