Linq To Text Files

10,384

Solution 1

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.

Solution 2

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.

Solution 3

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.

Share:
10,384
Admin
Author by

Admin

Updated on June 29, 2022

Comments

  • Admin
    Admin almost 2 years

    I have a Text File (Sorry, I'm not allowed to work on XML files :(), and it includes customer records. Each text file looks like:

    Account_ID: 98734BLAH9873
    User Name: something_85
    First Name: ILove
    Last Name: XML
    Age: 209
    

    etc... And I need to be able to use LINQ to get the data from these text files and just store them in memory.

    I have seen many Linq to SQL, Linq to BLAH but nothing for Linq to Text. Can someone please help me out abit?

    Thank you