Est-il possible de convertir une liste de chaînes en chaînes séparées par des virgules?
String[] data = new String[] { "test", "abc", "123" }
Convertir en:
'test', 'abc', '123'
Solutions possibles:
''
, puis utilisez String.join
dans la liste. Foreach
chaque chaîne de la liste et faire la concaténation de ''
et ','
et à la fin, supprimer le dernier ','
Existe-t-il une simple Linq (expression d'une ligne) permettant de faire les deux?
Existe-t-il une simple Linq (expression d'une ligne) permettant de faire les deux.
string.Join(",", data.Select(item => "'" + item + "'"))
Principes de base de Linq: Les transformations sont des instructions Select
. Les filtres sont des instructions Where
.
Cela dit, il existe de nombreux outils de manipulation de chaînes disponibles qui ne sont pas Linq, et ils sont plus susceptibles d'être optimisés pour les chaînes. Je me tournais donc toujours vers eux avant de regarder Linq.
Vous pouvez utiliser linq agrégé
Array.Skip(1).Aggregate(Array[0],(a,b) => string.Format("{0},'{1}'",a,b));
String[] data = new String[]{"test","abc","123"};
var result = string.Join(",", data.Select(o => string.Concat("'",o,"'"));
Vous pouvez également utiliser la méthode Aggregate: Exemple:
List<string> fruit = new List<string> {"Apple", "Orange", "Pear", "Tomato", "Banana"};
var fruitSentence = fruit.Aggregate((current, next) => $"{current},{next}");
NOTE: si vous commencez avec IEnumerable ou similaire, vous devez appeler .ToArray () à la fin de l'instruction LINQ comme ceci:
input parameter: IEnumerable<string> feederIdList
var feederListString = String.Join(",", feederIdList.Select(feeder => "\"" + feeder + "\"").ToArray());
Dans mon cas, j'avais besoin que chaque chaîne soit entourée de guillemets doubles pour pouvoir être transmise ultérieurement à une procédure stockée Oracle.