Linq到文本文件

3 .net c# linq text winforms

我有一个文本文件(对不起,我不允许处理XML文件:(),它包括客户记录.每个文本文件如下所示:

Account_ID: 98734BLAH9873
User Name: something_85
First Name: ILove
Last Name: XML
Age: 209
Run Code Online (Sandbox Code Playgroud)

等等......我需要能够使用LINQ从这些文本文件中获取数据,并将它们存储在内存中.

我见过很多Linq to SQL,Linq到BLAH,但没有Linq to Text.有人可以请我帮助我吗?

谢谢

Kae*_*ber 12

你可以使用这样的代码

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

或者使用.NET 4.0 File.ReadLines()方法返回IEnumerable,这对处理大文本文件很有用.


Mar*_*tos 6

文本文件数据源的概念非常广泛(考虑到XML存储在文本文件中).出于这个原因,我认为这样的野兽不太可能存在.

它应该很简单,将文本文件读入Account对象的集合,然后使用LINQ-to-Objects.


Rob*_*sor 5

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;
}
Run Code Online (Sandbox Code Playgroud)

一旦FileHelpers为您提供了一系列行,您就可以使用Linq to Objects来查询数据

我们取得了巨大的成功.我实际上认为Kaerber的解决方案是一个很好的简单解决方案,可能会迁移到FileHelpers,直到你真的需要额外的功率.