2017-02-03 93 views
2

我無法確定這是否可能,並且如果我想推拉姆達太遠。我不喜歡雙正則表達式(Class.Column不是我的)。我有這個簡單的選擇功能:linq lambda多步驟陣列

(ColumNames是一個List)

string reg = "(.*):(.*)"; 
Class.Column[] Columns = (Class.Column[])this.ColumnNames 
    .Select(x => 
     new Class.Column() { 
      Param1 = Regex.Match(x, reg).Groups[1].ToString(), 
      Param2 = Regex.Match(x, reg).Groups[2].ToString() 
     } 
    ); 

有沒有一種方法來設置正則表達式輸出爲z,然後param1 = z1.Groups[1].ToString()

+0

更換投爲什麼不'x.Split( ':')' – Slai

回答

2

您可以linq multiple選擇執行多個轉換。 您還可以通過一個ToArray的功能

 Class.Column[] Columns = this.ColumnNames 
      .Select(x=> Regex.Match(x, reg)) 
      .Select(z => 
      new Class.Column() 
      { 
       Param1 = z.Groups[1].ToString(), 
       Param2 = z.Groups[2].ToString() 
      }).ToArray(); 
+0

我認爲'.ToArray()'是必要的。將'.Select(...)'結果轉換爲數組將失敗,因爲它不是數組。 – Maarten

+0

你說得對。我想說的是,正確的做法是使用ToArray()功能,而不是更好。 –