IEnumerable to string - PullRequest
       9

IEnumerable to string

35 голосов
/ 05 августа 2010

У меня есть DataTable, который возвращает

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

Я хочу преобразовать это в одностроковое значение, то есть:

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

Как я могу переписать следующее, чтобы получить одну строку

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

Ответы [ 7 ]

92 голосов
/ 05 августа 2010
var singleString = string.Join(",", _values.ToArray() );
9 голосов
/ 05 августа 2010

Напишите метод расширения, такой как

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();
    }
}

и предполагая, что результатом вашего предыдущего выражения является IEnumerable , вызов:

var _values = _tbl.AsEnumerable().Select(x => x).AppendAll(String.Empty);    
5 голосов
/ 05 августа 2010
 String.Join(
      ",",
      _tbl.AsEnumerable()
          .Select(r => r.Field<int>("ID").ToString())
          .ToArray())
3 голосов
/ 05 августа 2010

Попробуйте это:

var _values = _tbl.AsEnumerable().Select(x => x);
string valueString = _values.ToList().Aggregate((a, b) => a + b);
2 голосов
/ 28 ноября 2017

У меня была похожая проблема с общим типом Array, и я решил ее следующим образом

string GetMembersAsString(Array array)
{
    return string.Join(",", array.OfType<object>());
}

Обратите внимание, что вызов OfType<object>() является обязательным.

2 голосов
/ 07 июня 2017

Вы можете использовать MoreLINQ расширение

var singleString = _values.ToDelimitedString(",");
0 голосов
/ 05 августа 2010

Вы можете обмануть это:

String output = "";
_tbl.AsEnumerable().Select(x => output += x).ToArray(); 
// output now contains concatenated string

Примечание. ToArray() или подобное необходимо для выполнения запроса.

Другой вариант -

String output = String.Concat(_tbl.AsEnumerable().Select(x=>x).ToArray());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...