C# 将分隔文件读入DataTable的高效函数
我想知道是否有人知道一种高效的c#函数,用于将制表符分隔的文件读入数据表C# 将分隔文件读入DataTable的高效函数,c#,.net,file,import,C#,.net,File,Import,我想知道是否有人知道一种高效的c#函数,用于将制表符分隔的文件读入数据表 谢谢这里有一个方法 var dt = new DataTable(); dt.Columns.Add(new DataColumn("Column1", typeof(string))); dt.Columns.Add(new DataColumn("Column2", typeof(string))); dt.Columns.Add(new DataColu
谢谢这里有一个方法
var dt = new DataTable();
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dt.Columns.Add(new DataColumn("Column3", typeof(string)));
var lines = File.ReadAllLines(@"c:\tabfile.txt");
foreach( string line in lines )
dt.Rows.Add(line.Split('\t'));
目前,如果需要在.Net 2.0上使用LINQ方法,则可以轻松地重新创建这两种方法
//even cooler as an extension method
static IEnumerable<string> ReadAsLines(string filename)
{
using (var reader = new StreamReader(filename))
while (!reader.EndOfStream)
yield return reader.ReadLine();
}
static void Main()
{
var filename = "tabfile.txt";
var reader = ReadAsLines(filename);
var data = new DataTable();
//this assume the first record is filled with the column names
var headers = reader.First().Split('\t');
foreach (var header in headers)
data.Columns.Add(header);
var records = reader.Skip(1);
foreach (var record in records)
data.Rows.Add(record.Split('\t'));
}
//更酷的扩展方法
静态IEnumerable可读行(字符串文件名)
{
使用(var reader=newstreamreader(文件名))
而(!reader.EndOfStream)
产生返回reader.ReadLine();
}
静态void Main()
{
var filename=“tabfile.txt”;
var reader=ReadAsLines(文件名);
var data=new DataTable();
//这假设第一条记录中填写了列名
var headers=reader.First().Split('\t');
foreach(标头中的var标头)
data.Columns.Add(表头);
var记录=读卡器。跳过(1);
foreach(记录中的var记录)
data.Rows.Add(record.Split('\t'));
}
如果文件真的很大,那么您要在MemoryEah中创建同一个大文件的两个副本,我应该提到这一点。我想让这个例子保持简单。如果文件很大的话,流阅读器会更合适。这很完美,我把它用于我自己的项目,有没有一种不用Jet的方法?对于我们这些拥有禁止进入的机器的人。
//even cooler as an extension method
static IEnumerable<string> ReadAsLines(string filename)
{
using (var reader = new StreamReader(filename))
while (!reader.EndOfStream)
yield return reader.ReadLine();
}
static void Main()
{
var filename = "tabfile.txt";
var reader = ReadAsLines(filename);
var data = new DataTable();
//this assume the first record is filled with the column names
var headers = reader.First().Split('\t');
foreach (var header in headers)
data.Columns.Add(header);
var records = reader.Skip(1);
foreach (var record in records)
data.Rows.Add(record.Split('\t'));
}