2011-04-18 12 views
4

在.NET 4.0中,我有时一个GUID []或200项都需要转换为字符串[],有时候我必须做的相反。Guid最快转换为字符串并返回?

什么是做到这一点的最快/最聪明的方法是什么?

谢谢。

+0

这是你可以和应该测试自己。请发布您迄今为止编写的代码。 – 2011-04-18 01:33:36

+0

myguids.Select(Guid.Parse).ToArray() – Snowy 2011-04-18 01:46:04

回答

20

到LINQ的替代方案是在这种情况下Array.ConvertAll()

Guid[] guidArray = new Guid[100]; 
... 
string[] stringArray = Array.ConvertAll(guidArray, x => x.ToString()); 
guidArray = Array.ConvertAll(stringArray, x => Guid.Parse(x)); 

运行时性能可能是一样的LINQ,虽然它可能是一点点更快因为它是从数组中直接进入而不是首先进行枚举。

+0

+1表示性能,因为它可以预分配正确大小的数组。 – dahlbyk 2011-04-18 02:15:09

+0

太棒了。我完全忘记了ConvertAll()。谢谢! – Snowy 2011-04-18 02:22:54

+0

@dagkbyk @Snowy:如果性能是一个考虑因素,我会说你就应该剖析他们 - 我猜的LINQ版本实际上将是更快,因为它并不需要分配一个数组*(它只是返回的字符串作为你要求他们)*。此外,它不需要使用数组,这总是一件好事。 – 2011-04-18 02:34:17

2

好吧,如果你想使用LINQ,myList.Select(o => o.ToString())将做到这一点。

否则,填充Listforeach环几乎是简洁,并与旧版本的.Net的工作。

2

看看是否有帮助:

Guid[] guids = new Guid[200]; 
var guidStrings = guids.Select(g => g.ToString()); 
var revertedGuids = guidStrings.Select(g => Guid.Parse(g)); 
+0

我只是觉得你正在寻找的转化最有效的方法;我不确定,但这是最简单的方法。 – Howard 2011-04-18 02:04:41