2009-08-31 55 views
3

考慮形狀像這樣的字符串數組:LINQ:獲取每個字符串的第一個字符在陣列

string[] someName = new string[] { "First", "MiddleName", "LastName" }; 

要求是從陣列中的每個元件得到第一個字符。

FML

此前曾嘗試:

string initials = string.Concat(someName.Select(x => x[0])); 

問:你會寫什麼LINQ查詢來連接包含字符串數組中的所有名稱給首字母縮寫?

回答

21

試試這個:

string shortName = new string(someName.Select(s => s[0]).ToArray()); 

,或者,如果你懷疑任何字符串可能是空的,或者這樣:

string shortName = new string(someName.Where(s => !string.IsNullOrEmpty(s)) 
             .Select(s => s[0]).ToArray()); 
+2

如果任何一個字符串是空的,這將引發 – JaredPar 2009-08-31 21:26:44

+1

咩佔空字符串爲好。在那裏,我修好了。 :P – Botz3000 2009-08-31 21:31:41

6
string[] someName = new string[] { "First", "MiddleName", "LastName" }; 
    String initials = String.Join(".",someName.Select(x => x[0].ToString()).ToArray()); 

主要生產

FML

7

該解決方案從輸出刪除它們

var shortName = new string(
    someName 
    .Where(s => !String.IsNullOrEmpty(s)) 
    .Select(s => s[0]) 
    .ToArray()); 
+1

不會編譯,你忘了ToArray() – 2009-08-31 21:28:17

+0

@Stan,謝謝,添加 – JaredPar 2009-08-31 21:32:20

0
​​
+0

使用聚合而不是String.Join或字符串構造函數的獎勵點。 – 2009-08-31 21:33:03

+1

我不知道,如果這是值得的獎金點,在這一點的矯枉過正:P – 2009-08-31 21:36:15

+0

這絕對是矯枉過正。 – Shiva 2009-09-01 00:36:24

-2
string[] someName = new string[] { "First", "MiddleName", "LastName" }; 

someName.FirstOrDefault(); 
相關問題