数组中的GUID最快转换为字符串,以及反向操作?

7

在.NET 4.0中,有时我需要将Guid[]或200个项目全部转换为string[],有时我又需要反过来做。

最快/最聪明的方法是什么?

谢谢。


这是你可以并且应该自己测试的东西。请发布你已经编写的代码。 - Mitch Wheat
myguids.Select(Guid.Parse).ToArray() - Snowy
3个回答

25

在这种情况下,替代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相同,尽管它可能会略微快一点,因为它直接从数组中获取并返回,而不是先进行枚举。


+1 是为了性能,因为它可以预先分配正确大小的数组。 - dahlbyk
太棒了。我完全忘记了ConvertAll()。谢谢! - Snowy
如果性能是一个考虑因素,我会建议你对它们进行分析 - 我猜LINQ版本实际上会更快,因为它不需要分配数组(它只是在你请求字符串时返回它们)。此外,它不需要使用数组,这总是一件好事。@dagkbyk @Snowy - BlueRaja - Danny Pflughoeft
@BlueRaja:问题特别涉及到数组转换,如果不需要使用数组,那就另当别论了。 - BrokenGlass

3

如果你想使用LINQ,myList.Select(o => o.ToString())就可以了。

否则,使用foreach循环填充List几乎同样简洁,并且可以在旧版本的.Net中使用。


2
看看这是否有帮助:
Guid[] guids = new Guid[200];
var guidStrings = guids.Select(g => g.ToString());
var revertedGuids = guidStrings.Select(g => Guid.Parse(g));

我认为你正在寻找一种最有效的转换方式;我不确定,但这是最简单的方法。 - Howard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接