How to read a CSV file one line at a time and parse out keywords

c#, csv, streamreader

Solution

If your CSV file contains just one line the `ReadToEnd` could be acceptable, but if you have a log file composed of more than one line then it is better to read line by line using `ReadLine` of the `StreamReader` object

using (StreamReader sr = new StreamReader("c:/temp/ESMDLOG.csv"))
{
    string currentLine;
    // currentLine will be null when the StreamReader reaches the end of file
    while((currentLine = sr.ReadLine()) != null)
    {
       // Search, case insensitive, if the currentLine contains the searched keyword
       if(currentLine.IndexOf("I/RPTGEN", StringComparison.CurrentCultureIgnoreCase) >= 0)
       {
            Console.WriteLine(currentLine);
       }
    }
}

Problem

I am new to C# and I have started using `StreamReader`. I am trying to read a file one line at a time and output the line when it matches a specific keyword like "I/RPTGEN". So far I figured out how to read the entire file into a string, but I'm having trouble figuring out how to just read it one line at a time. My code so far is this. ``` using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication5 { class Test { public static void Main() { try { using (StreamReader sr = new StreamReader("c:/temp/ESMDLOG.csv")) { String line = sr.ReadToEnd(); Console.WriteLine(line); Console.ReadLine(); } } catch (Exception e) { Console.WriteLine("The File could not be read:"); Console.WriteLine(e.Message); Console.ReadLine(); } } } } ``` Plus here is a sample of one line in the file. Advisory,2/27/2013 12:00:44 AM,I/RPTGEN (cadinterface),I/RPTGEN Failed - Error 500 - Internal Server Error - returned for a report request (check log for URL).

Original source