How to Organize Data Read From A File?

There are some cool classes and tricks and short cuts in C#. I know this but I have not worked with C# enough to have them memoried.

One cool trick is this. If you read from a file data that is arranged in a similar line-by-line structure where each line is arranged in columns spaced out by tabs, the data can be read into a kind of class in C# and then you can parse out one column of data by simply doing a “for each” command. Does anyone know off-hand how this is done?

Basically, what I am talking about is this. I understand how to read a file line by line:


            int counter = 0;
            string line;
            System.IO.StreamReader file =
               new System.IO.StreamReader(filename);

            while ((line = file.ReadLine()) != null)
            {
                Console.WriteLine(line);
                counter++;
            }

            file.Close();

Now, how would I go about replacing Console.WriteLine(line); with code that will organize the data automatically into
members of a class provided that the line columns in the input file are seperated by /t (tabs)?

A naieve implementation would use string.Split('\ '). That said, check out filehelpers – it is pretty much all you need to process a delimited or fixed-width text file.

you can use LINQ to load data to list and manipulate the way you need…like
getList = from line in File.ReadAllLines(fileName)
let itemRecord = line.Split('\ ')
select new Record()
{
itemID = itemRecord [0],
lname = itemRecord [1]
}.ToList();

Make sure you declare a class Record with properties itemIDand lname

This can be done natively with the Odbc system. From the MSDN archive:


public DataSet SelectOdbcSrvRows(DataSet dataset,string connection,string query) 
{
    OdbcConnection conn = new OdbcConnection(connection);
    OdbcDataAdapter adapter = new OdbcDataAdapter();
    adapter.SelectCommand = new OdbcCommand(query, conn);
    adapter.Fill(dataset);
    return dataset;
}

As long as you know how to set up an odbc connection string, you’re golden. Here’s an example:

string connection = @“Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=C:;Extensions=csv,txt”;

Here is some further reading for you.

I hope this helps. =)

  • The sample code does not demonstrate proper open/close/dispose practices. It is provided as a sample only.

There are some cool classes and tricks and short cuts in C#. I know this but I have not worked with C# enough to have them memoried.
One cool trick is this. If you read from a file data that is arranged in a similar line-by-line structure where each line is arranged in columns spaced out by tabs, the data can be read into a kind of class in C# and then you can parse out one column of data by simply doing a “for each” command.

Regards,
Sabareesh