67 votes

IEnumerable en chaîne délimitée par des virgules ?

J'ai un DataTable qui renvoie

 IDs
,1
,2
,3
,4
,5
,100
,101

Je veux convertir cela en valeur de chaîne unique, c'est-à-dire :

 ,1,2,3,4,5,100,101

Comment puis-je réécrire ce qui suit pour obtenir une seule chaîne

 var _values = _tbl.AsEnumerable().Select(x => x);

165voto

Winston Smith Points 12029
var singleString = string.Join(",", _values.ToArray() );

12voto

Alex Humphrey Points 2794

Écrivez une méthode d'extension telle que

 public static String AppendAll(this IEnumerable<String> collection, String seperator)
{
    using (var enumerator = collection.GetEnumerator())
    {
        if (!enumerator.MoveNext())
        {
            return String.Empty;
        }

        var builder = new StringBuilder().Append(enumerator.Current);

        while (enumerator.MoveNext())
        {
            builder.Append(seperator).Append(enumerator.Current);
        }

        return builder.ToString();
    }
}

et en supposant que le résultat de votre expression précédente est IEnumerable<String>, appelez :

 var _values = _tbl.AsEnumerable().Select(x => x).AppendAll(String.Empty);    

5voto

abatishchev Points 42425
 String.Join(
      ",",
      _tbl.AsEnumerable()
          .Select(r => r.Field<int>("ID").ToString())
          .ToArray())

4voto

Tim S. Van Haren Points 5936

Essaye ça:

 var _values = _tbl.AsEnumerable().Select(x => x);
string valueString = _values.ToList().Aggregate((a, b) => a + b);

2voto

Ad23 Points 96

Vous pouvez utiliser l'extension MoreLINQ

 var singleString = _values.ToDelimitedString(",");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X