score:12

Accepted answer

You can use the code like that

var pairs = File.ReadAllLines("filename.txt")
    .Select(line => line.Split(':'))
    .ToDictionary(cells => cells[0].Trim(), cells => cells[1].Trim())

Or use the .NET 4.0 File.ReadLines() method to return an IEnumerable, which is useful for processing big text files.

score:5

Filehelpers is a really great open source solution to this:

http://filehelpers.sourceforge.net/

You just declare a class with attributes, and FileHelpers reads the flat file for you:

[FixedLengthRecord]
public class PriceRecord
{
    [FieldFixedLength(6)]
    public int ProductId;

    [FieldFixedLength(8)]
    [FieldConverter(typeof(MoneyConverter))]
    public decimal PriceList;

    [FieldFixedLength(8)]
    [FieldConverter(typeof(MoneyConverter))]
    public decimal PriceOnePay;
}

Once FileHelpers gives you back an array of rows, you can use Linq to Objects to query the data

We've had great success with it. I actually think Kaerber's solution is a nice simple solution, maybe stave of migrating to FileHelpers till you really need the extra power.

score:6

The concept of a text file data source is extremely broad (consider that XML is stored in text files). For that reason, I think it is unlikely that such a beast exists.

It should be simple enough to read the text file into a collection of Account objects and then use LINQ-to-Objects.


Related Query

More Query from same tag