2010-09-04 11 views
3

我一個名單<字符串>像在C#中使用LINQ操控列表<String>

List<String> ListOne = new List<string> { "A-B", "B-C" }; 

我需要的,如果它包含分割每個字符串「 - 」添加到同一列表

所以結果會是怎樣

{ "A-B", "B-C","A","B","C" }; 

現在,我使用像

 for (int i = 0; i < ListOne.Count; i++) 
     { 
      if (ListOne[i].Contains('-')) 
      { 
       List<String> Temp = ListOne[i].Split('-').ToList(); 
       ListOne= ListOne.Union(Temp).ToList(); 
      } 
     } 

有沒有辦法使用LINQ來做到這一點?

回答

4
ListOne.Union(ListOne.SelectMany(i => i.Split('-'))) 
+0

這不會將其添加到同一個列表,它會創建一個新的IEnumerable'' JaredPar 2010-09-04 05:36:42

+0

@JaredPar如果那是他在找什麼的,你很可能效率更高,但是現在運行測試的時間已經太晚了。 – 2010-09-04 05:47:03

+0

並不擔心效率。只是注意到OP要求的細微差別。你可以很容易地修改,以滿足它。 – JaredPar 2010-09-04 05:49:56

3

請嘗試以下

List.AddRange(
    ListOne 
    .Where(x => x.Contains("-")) 
    .SelectMany(x => x.Split('-')) 
    .Distinct() 
    .ToList());