2016-05-13 3 views
-1

unten ist kleiner Codeausschnitt, in dem ich eine csv Akte lese und zuerst überspringe, weil die erste Zeile Feldname hat. Wie könnte ich die Linie je nach Zustand überspringen oder nicht überspringen? angenommen Ländercode ist US oder MX dann wird die erste Zeile nicht übersprungen, aber wenn Ländercode ist GB oder FR dann wäre die erste Zeile überspringen. schlagen Sie mir vor, was ich in meinem unteren Code als Ergebnis hinzufügen kann, wird die erste Linie von der Bedingung abhängen.C# Wie man die Linie bedingt oder nicht überspringt

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

Welche Linie tun Sie bedingt überspringen möchten? Die erste Zeile? Woher kommt der Ländercode? Ist es für jede Zeile anders? –

+0

Ihre Frage ist ein wenig unklar. Möchten Sie die erste Zeile überspringen, da sie nur Feldnamen enthält? Es gibt also keine Bedingung ... Sie bestimmen in Ihrem letzten 'Select' keinen Ländercode. Woher soll das kommen? –

Antwort

6

A ternary expression wird es tun

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

Elegant. ich mag das –

Verwandte Themen