2017-02-03 1 views
2

이것이 가능한지, 람다를 너무 멀리 밀고 싶은지 알 수 없습니다. 나는 double regex (Class.Column이 내 것이 아니다)를 좋아하지 않는다.linq lambda multiple steps array

(ColumNames가리스트)

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() 
     } 
    ); 

다음, param1 = z1.Groups[1].ToString()을 Z로 정규식 출력을 설정하는 방법이 있나요 :이 간단한 선택 기능이 있습니까?

+0

하여 캐스트를 교체해야' – Slai

답변

2

linq multiple 선택하면 여러 변형을 수행 할 수 있습니다. 단지`x.Split가 ('가')하지 왜 당신은 또한 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() 기능을 사용하는 것이지 바람직하지 않다는 것입니다. –