我有一个文本文件(对不起,我不允许处理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,这对处理大文本文件很有用.
文本文件数据源的概念非常广泛(考虑到XML存储在文本文件中).出于这个原因,我认为这样的野兽不太可能存在.
它应该很简单,将文本文件读入Account对象的集合,然后使用LINQ-to-Objects.
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,直到你真的需要额外的功率.