2012-12-26 32 views
3

我寫了下面的代碼解析csv文件:太多的函數調用

var result = FullFile.Split('\n') 
    .Select(s => new 
    { FirstName = s.Split(',')[(int)FirstName.Value], 
    SirName = s.Split(',')[(int)sirName.Value], 
    garde = s.Split(',')[(int)Grade.Value] }); 

現在,我使用的功能Split太多次使用相同的參數,並在同一對象上。

有沒有辦法繼續使用lambda表達式,並減少這個函數調用?

在我編寫任何其他意見,歡迎

回答

7

是的,你可以在第一Select一次拆分,並將結果傳遞環比下滑至第二Select,像這樣:

var result = FullFile 
    .Split('\n') 
    .Select(line => line.Split(',')) 
    .Select(tt => new 
     { FirstName = tt[(int)FirstName.Value], 
      SirName = tt[(int)sirName.Value], 
      garde = tt[(int)Grade.Value] }); 
4

試試這個:

var result = from var s in FullFile.Split('\n') 
        let x = s.Split(',') 
        select new { 
           FirstName = x[(int)FirstName.Value], 
           SirName = x[(int) SirName.Value], 
           Grade = x[(int) Grade.Value] 
          }; 
+1

僅供參考,您可能指的是「SurName」,而不是「SirName」。 –