csv 파일이 포함 된 폴더를 검색해야합니다. 내가 관심있는 레코드에는 Rec, Country 및 Year의 3 개 필드가 있습니다. 내 일은 파일을 검색하고 파일에 1 년 이상의 기록이 있는지 확인하는 것입니다. 지금까지 가지고있는 코드 아래 :
// 폴더에서 각 개별 파일을 가져옵니다.
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
이제 단일 쿼리로 내 문제를 해결하기 위해이 두 가지 아이디어를 결합하는 데 어려움을 겪고 있습니다. 쿼리는 1 년 이상의 기록이있는 파일을 나열해야합니다.
미리 감사드립니다
이 라인을 따라 뭔가 :
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] 삭제
몇 마디 만하겠습니다