2016-04-25 55 views
0

我正在用C#編寫插件代碼,並且存在一個實際上是字符串數組的自定義IEnumerable。然而,不能對數組元素進行字符串操作,因爲它們不是<string>類型。但我需要他們是字符串,我必須作爲字符串操作它們。Visual C#將自定義IEnumerable轉換爲字符串[]

所以我已經添加了這些2行代碼把數組轉換爲字符串:

var arrayRawSourceText = EditorController.ActiveDocument.ActiveSegmentPair.Source.AllSubItems.ToArray(); 
string[] arraySourceText = new string[arrayRawSourceText.Length]; 
for (int i = 0; i < arrayRawSourceText.Length; i++) { arraySourceText[i] = arrayRawSourceText[i].ToString(); } 

只有兩行,但我不知道是否有數組轉換爲<string>的一個簡單的方法。就像一個lambda表達式或其他任何使這個更簡單的方法。

回答

1

如果AllSubItems實施IEnumerable我想這個代碼片段應該工作:

var arraySourceText = EditorController.ActiveDocument 
             .ActiveSegmentPair 
             .Source 
             .AllSubItems 
             .Select(t => t.ToString()) 
             .ToArray(); 
+0

完美,它實現它並且工作花哨。 – ib11

0

我已經看到你已經接受了答案,但對於進一步的搜索,也許這將適合太:

var arraySourceText = EditorController.ActiveDocument 
            .ActiveSegmentPair 
            .Source 
            .AllSubItems 
            .Cast<string>() 
            .ToArray(); 
+0

'Cast ()'不起作用,但是lambda表達式會。我相信演員會受到更多的限制。不過謝謝。 – ib11