如何将Guid []转换为String?

Bru*_*oLM 8 c# .net-3.5

有点像String.Join(",", new string[] { "a", "b" });,但对于Guid[]

var guids = new Guid[] { Guid.Empty, Guid.Empty };

var str = /* Magic */

// str = 00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 22

var str = guids.Select(g => g.ToString())
               .Aggregate((working, next) => working + "," + next);
Run Code Online (Sandbox Code Playgroud)

一旦你的Guids列表开始增长,这种连接方法将导致性能问题.您可以修改它以使用StringBuilder:

var str = guids.Select(g => g.ToString())
               .Aggregate(new StringBuilder(),
                          (sb, str) => sb.Append("," + str),
                          sb => sb.ToString());
Run Code Online (Sandbox Code Playgroud)

这两者都是复杂的LINQ Extension方法.你也可以简单地使用String.Join:

var str = String.Join(",", guids.Select(g => g.ToString()).ToArray());
Run Code Online (Sandbox Code Playgroud)

  • @Bruno,如果它对您有用,请将其标记为已接受的答案!:-) (2认同)

Yur*_*ich 19

String.Join(",", guids.Select(g => g.ToString()).ToArray());
Run Code Online (Sandbox Code Playgroud)

  • .NET 4添加了一个通用的`Join`方法,您只需将`guids`数组传递给它即可 (3认同)

the*_*oop 15

.NET 4添加了一种String.Join<T>(string separator, IEnumerable<T> values方法.因此,在.NET 4中,这将起作用:

String.Join(",", guids);
Run Code Online (Sandbox Code Playgroud)


Dav*_*Dev 5

我觉得这会有用吗?

StringBuilder stringBuilder = new StringBuilder();
int i = 0;
foreach (var guid in guids)
{
    stringBuilder.Append(guid.ToString());
    if (++i < guids.Length)
    { 
        stringBuilder.Append(","); 
    }
}

var str = stringBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)

  • 作为一个建议,我会在附加guid之前附加逗号,但仅当stringbuilder.length> 0时才 (3认同)
  • 这将在最后增加一个逗号. (2认同)