2016-05-13 198 views
-1

下面是小代码片断,我正在阅读csv文件并首先跳过,因为第一行有字段名称。所以我如何跳过或不根据条件跳过线。假设国家代码是美国或MX那么第一行将不会被跳过,但如果国家代码是GB或FR那么第一行就会跳过。建议我在下面的代码中添加什么,因为第一行跳过将取决于条件。C#如何跳过或不有条件跳过

public List<PhoneData> GetPhoneData(string strFileName) 
     { 
      return File.ReadLines(strFileName) 
       .Skip(1) 
       .Where(s => s != "") 
       .Select(s => s.Split(new[] { ',' })) 
       .Select(a => new PhoneData 
       { 
        Call_Start = DateTime.Parse(a[0]), 
        call_duration = TimeSpan.Parse(a[1]), 
        Ring_duration = int.Parse(a[2]), 
        direction = a[4], 
        Is_Internal =Convert.ToInt32(a[8]), 
        continuation = int.Parse(a[10]), 
        party1name = a[13], 
        Caller = a[3], 
        Park_Time = Convert.ToInt32(a[16]), 
        Called_number = a[5] 
       }) 
       .ToList(); 
     } 
    } 
+0

哪条线要有条件地跳过?第一行?国家代码从哪里来?每条线都不一样吗? –

+0

你的问题有点不清楚。你想跳过第一行,因为它只包含字段名称?所以没有条件......你不会在你最近的“选择”中确定一个国家代码。从哪里来? –

回答

6

一个ternary expression会做

return File.ReadLines(strFileName) 
      .Skip(someCondition ? 0 : 1) 
+0

优雅。我喜欢 –