开发者

Linq To Text Files

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: 2开发者_如何学JAVA09

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


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.


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜