Comment obtenir la première et la dernière valeur de la liste<string>?
Je veux obtenir seulement first
et last
valeurs de List<string>
.
List<String> _ids = ids.Split(',').ToList();
code ci-dessus me donne toutes les ,
de valeurs séparées par des
(aaa,bbb,ccc,ddd,)
J'ai besoin de prendre et de montrer uniquement le 1er et le dernier des valeurs , comment puis-je faire cela?
output aaa,ddd
J'ai essayé avec first
et last
mais je tiens à éliminer ,
qui est là à la fin de la chaîne 🙁
- Je suppose que vous n'avez pas essayer quelque chose pour cela.
- Il devrait y avoir PAS de virgule à la fin quand vous séparés par une virgule. Si vous pensez qu'il est, il doit être à cause de certains de code que vous ne nous montre PAS. Merci de poster un compilable exemple qui donne la virgule supplémentaire à la fin.
- Je suis d'accord avec Matthew Watson, est-il un espace à la fin de la chaîne d'entrée. Comment êtes-vous tester la chaîne de valeur. D'où la sortie à venir de (faites-vous un
string.Join
)? ,
est venue à la fin parce que quand j'ai envoyer des paramètres-je ajouter,
après chaque paramètre de sorte que, au.cs
fichier, il est à venir là 🙁- ashuthinks, pourquoi ne pouvez-vous pas simplement utiliser
string.Join
qui ne sera pas ajouter de la dernière,
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
List<string>
comme un tableau, par exemple;Avec l'aide de LINQ, vous pouvez utiliser
Énumérable.Premier
etÉnumérable.Dernière
méthodes.Sortie sera;
Ici une
DÉMO
.NOTE: Comme Alexandre Simonov pointu, si votre
List<string>
est vide,First()
etLast()
lèvera une exception. Être conscient deFirstOrDefault()
ou.LastOrDefault()
méthodes._ids[_ids.Count - 1];
au lieu de_ids.Last()
?.First()
et.Last()
peut lancer une exception lorsque_ids
liste est vide. Il est donc préférable d'utiliser.FirstOrDefault()
et.LastOrDefault()
.:)
. Prendre un coup d'oeil stackoverflow.com/revisions/18981352/1La réponse simple est l'utilisation de Linq
Vous voudrez peut-être un peu plus de complexité, car si la longueur est 0 une exception sera levée et si la longueur est 1 alors la même valeur est retourné deux fois.
Vous pouvez ensuite utiliser ces méthodes d'extension.
EDIT - NON Linq Version
MODIFIER - SUPPRIMER LA FIN
,
À l'aide soit de ce qui précède méthodes, Linq ou NonLinq vous voulez probablement faire.
,
qui est à la fin de la chaîne ;(idsTemp.Last()
beaucoup plus expressifs queidsTemp[idsTemp.Length - 1]
. Linq permet de votre code doit être exprimé en ce que vous voulez dire beaucoup plus facile.,
, les avez-vous pensé à utiliserTrim(new[] {','})
Selon la Liste des "Classe" de la Documentation
http://msdn.microsoft.com/library/vstudio/s6hkc2c4.aspx
System.Linq
espace de noms. Alors que la réponse est techniquement pas mauvais, cela pourrait conduire à un peu de confusion!Par des mains:
Par LINQ:
By hands
est exactement sans LINQ.,
qui est à la fin de la chaîne 🙁ids.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries)
au lieu deids.Split(',')
.En réponse au dernier commentaire de l'OP:
", est venue à la fin parce que quand j'ai envoyer des paramètres-je ajouter , après chaque paramètre afin de à la .cs fichier, il est à venir il y"
Il semble que vous essayez de générer une chaîne de caractères contenant des valeurs séparées par des virgules à partir d'un tableau de chaînes de caractères.
Vous pouvez faire cela en utilisant
string.Join()
, comme suit: