类似于 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
var str = guids.Select(g => g.ToString())
.Aggregate((working, next) => working + "," + next);
一旦您的GUID列表开始增长,这种连接方法会导致性能问题。 您可以修改它以使用 StringBuilder:
var str = guids.Select(g => g.ToString())
.Aggregate(new StringBuilder(),
(sb, str) => sb.Append("," + str),
sb => sb.ToString());
这两种方式都是使用复杂的LINQ扩展方法完成的。您也可以简单地使用String.Join:
var str = String.Join(",", guids.Select(g => g.ToString()).ToArray());
.NET 4增加了一个String.Join<T>(string separator, IEnumerable<T> values)
方法。因此,在.NET 4中,只需执行此操作即可:
String.Join(",", guids);
String.Join(",", guids.Select(g => g.ToString()).ToArray());
Join
方法,您可以直接将guids
数组传递给它,无需进行修改。 - thecoopStringBuilder 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();
如果你的框架版本>= .NET 3.5
String.Join(",", (from g in guids select g.ToString()).ToArray())
String.Join(",", Array.ConvertAll(guids, g => g.ToString()));
Converter<TInput, TOutput>
接口的类,而你传递了一个方法。 - Yuriy Faktorovich//Convert string to List<string>
List<string> guidList = your_string.Split(',').ToList<string>();
//Convert string to List<Guid>
List<Guid> guidList = your_string.Split(',').ToList<string>().ConvertAll<Guid>(g => new Guid(g));