我有一个返回
的DataTableIDs
,1
,2
,3
,4
,5
,100
,101
我想将其转换为单字符串值,即:
,1,2,3,4,5,100,101
如何重写以下内容以获取单个字符串
var _values = _tbl.AsEnumerable().Select(x => x);
答案 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());