IEnumerable 到用逗号分隔的字符串?

发布于 2024-09-13 08:30:59 字数 253 浏览 2 评论 0原文

我有一个返回的 DataTable

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

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

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

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

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

I have a DataTable that returns

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

I want to convert this to single string value, i.e:

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

How can i rewrite the following to get a single string

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

我家小可爱 2024-09-20 08:30:59
var singleString = string.Join(",", _values.ToArray() );
var singleString = string.Join(",", _values.ToArray() );
拿命拼未来 2024-09-20 08:30:59

编写一个扩展方法,例如

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

Write an extension method such as

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

and assuming the result of your previous expression is IEnumerable<String>, call:

var _values = _tbl.AsEnumerable().Select(x => x).AppendAll(String.Empty);    
り繁华旳梦境 2024-09-20 08:30:59
 String.Join(
      ",",
      _tbl.AsEnumerable()
          .Select(r => r.Field<int>("ID").ToString())
          .ToArray())
 String.Join(
      ",",
      _tbl.AsEnumerable()
          .Select(r => r.Field<int>("ID").ToString())
          .ToArray())
笑饮青盏花 2024-09-20 08:30:59

试试这个:

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

Try this:

var _values = _tbl.AsEnumerable().Select(x => x);
string valueString = _values.ToList().Aggregate((a, b) => a + b);
書生途 2024-09-20 08:30:59

我对一般 Array 类型遇到了类似的问题,我按如下方式解决了它。

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

请注意,调用 OfType() 是强制性的。

I had a similar issue with general Array type and i solved it as follows

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

Note that call OfType<object>() is mandatory.

吃→可爱长大的 2024-09-20 08:30:59

您可以使用 MoreLINQ 扩展程序

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

You can use MoreLINQ extension

var singleString = _values.ToDelimitedString(",");
夏末 2024-09-20 08:30:59

你可以用这个作弊:

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

You can cheat with this:

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

Note ToArray() or similar is needed to force the query to execute.

Another option is

String output = String.Concat(_tbl.AsEnumerable().Select(x=>x).ToArray());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文