2014-05-07 39 views
0

我目前有:名單時間跨度到字符串數組使用LINQ

List<TimeSpan> times = new List<TimeSpan>(); 
    // ... setup the thousands of times ... 
string[] timeStrings = new string[times.Count]; 
for (int i = 0; i < times.Count; i++) 
    timeStrings[i] = times[i].ToString("mm.ss"); 

我覺得有應該是一個簡單的方法在LINQ做到這一點,但我不能找到它。我接近times.Select(s => s.ToString("mm.ss").ToArray()),但它只是第一個元素。

備註:那裏有沒有好的LINQ教程?

+0

檢查括號。 :) – samuelesque

+1

[101 LINQ示例](http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b) – Silvermind

回答

5

你幾乎擁有了:

var timesAsString = times.Select(s => s.ToString("mm.ss")).ToArray() 
+0

Duh ... Thanks =) 由於「安裝時間」部分,測試它需要幾分鐘時間。 – reasra

+0

很高興能幫到你! –

+0

所有的答案都是正確的。全部=> +1。雖然,它最終需要是一個多維數組,所以我不得不求助於一個for循環......悲傷...... – reasra

2
var timesAsString = times.Select(t => t.ToString("mm.ss")).ToArray(); 

目前你ToArray電話正在,而不是枚舉。

0
times.Select(s => s.ToString("mm.ss")).ToArray(); 
+1

只有不正確的答案得到upvote。 OP想要一個字符串集合,而不是一個字符串。 –

+0

@Dororzo:這沒有什麼區別。該列表被作爲參數傳遞給'string.Join',我認爲這需要一個'IEnumerable ',因此數組或列表也可以正常工作。 Thoguh不使用這兩種方法會更有效率(但由於缺少這些要求,仍會導致錯誤答案)。 – Chris

+1

沒有閱讀標題 – pkr298

2

這基本上是正確的,問題是,你的ToArray被稱爲弦上時,它應該是(基本上是一個錯字)之外;

你有什麼;

times.Select(s => s.ToString("mm.ss").ToArray()) 

你應該有什麼;

times.Select(s => s.ToString("mm.ss")).ToArray();