IEnumerable到字符串

时间:2010-08-05 11:36:21

标签: c# asp.net linq ado.net datatable

我有一个返回

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

我想将其转换为单字符串值,即:

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

如何重写以下内容以获取单个字符串

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

7 个答案:

答案 0 :(得分:92)

var singleString = string.Join(",", _values.ToArray() );

答案 1 :(得分:9)

编写扩展方法,例如

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&lt; String&gt;,请致电:

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

答案 2 :(得分:5)

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

答案 3 :(得分:3)

试试这个:

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

答案 4 :(得分:2)

您可以使用MoreLINQ扩展名

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

答案 5 :(得分:2)

我遇到了与Array类型相似的问题,我解决了以下问题

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

请注意,必须致电OfType<object>()

答案 6 :(得分:0)

你可以欺骗这个:

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