我需要搜索包含csv文件的文件夹。我感兴趣的记录有3个字段:Rec,Country和Year。我的工作是搜索文件,看看是否有任何文件具有超过一年的记录。到目前为止,我下面的代码:
//从文件夹中获取每个文件。
string startFolder = @"C:\MyFileFolder\";
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*",
System.IO.SearchOption.AllDirectories);
var queryMatchingFiles =
from file in fileList
where (file.Extension == ".dat" || file.Extension == ".csv")
select file;
然后我想出了这段代码来从每个文件中读取年份字段,并找到年份计数大于1的那些(计数部分未成功实现)
public void GetFileData(string filesname, char sep)
{
using (StreamReader reader = new StreamReader(filesname))
{
var recs = (from line in reader.Lines(sep.ToString())
let parts = line.Split(sep)
select parts[2]);
}
在示例文件下面:
REC,IE,2014
REC,DE,2014
REC,FR,2015
现在,我正在努力将这两个想法结合起来,以在单个查询中解决我的问题。该查询应列出那些已记录了一年以上的文件。
提前致谢
遵循以下原则:
string startFolder = @"C:\MyFileFolder\";
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*",
System.IO.SearchOption.AllDirectories);
var fileData =
from file in fileList
where (file.Extension == ".dat" || file.Extension == ".csv")
select GetFileData(file, ',')
;
public string GetFileData(string filesname, char sep)
{
using (StreamReader reader = new StreamReader(filesname))
{
var recs = (from line in reader.Lines(sep.ToString())
let parts = line.Split(sep)
select parts[2]);
var multipleyears = recs.Distinct().Count();
if(multipleyears > 1)
return filename;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句