Linq To Text Files - PullRequest
       15

Linq To Text Files

3 голосов
/ 27 апреля 2010

У меня есть текстовый файл (извините, я не могу работать с файлами XML :(), и он включает записи клиентов. Каждый текстовый файл выглядит так:

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

и т.д ... И мне нужно иметь возможность использовать LINQ для получения данных из этих текстовых файлов и просто сохранять их в памяти.

Я видел много Linq для SQL, Linq для BLAH, но ничего для Linq to Text. Может кто-нибудь помочь мне с abit?

Спасибо

Ответы [ 3 ]

12 голосов
/ 27 апреля 2010

Вы можете использовать такой код

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

Или используйте метод .NET 4.0 File.ReadLines () для возврата IEnumerable, что полезно для обработки больших текстовых файлов.

6 голосов
/ 27 апреля 2010

Концепция источника данных текстового файла чрезвычайно широка (учтите, что XML хранится в текстовых файлах). По этой причине я думаю, что такой зверь вряд ли существует.

Должно быть достаточно просто прочитать текстовый файл в коллекцию объектов Account и затем использовать LINQ-to-Objects.

5 голосов
/ 27 апреля 2010

Filehelpers - действительно отличное решение с открытым исходным кодом для этого:

http://filehelpers.sourceforge.net/

Вы просто объявляете класс с атрибутами, а FileHelpers считывает для вас плоский файл:

[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;
}

Как только FileHelpers возвращает вам массив строк, вы можете использовать Linq to Objects для запроса данных

У нас был большой успех с этим. Я на самом деле думаю, что решение Kaerber - это хорошее простое решение, возможно, остановите переход на FileHelpers, пока вам действительно не понадобятся дополнительные возможности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...