gpt4 book ai didi

c# - 尝试使用 linq 查询同一文件夹中的多个文本文件

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:23 26 4
gpt4 key购买 nike

我需要搜索包含 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;
}
}

关于c# - 尝试使用 linq 查询同一文件夹中的多个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078743/

26 4 0
文章推荐: c - 什么时候初始化指针?
文章推荐: angularjs - HTML5 视频无法播放且媒体请求中止
文章推荐: VC2012中与fwrite的混淆
文章推荐: node.js - Nodejs : TypeError: Object # has no method 'endianness'