2011-04-18 46 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