파일 이 같은 CSV 파일에서 이메일 "기록"고에 " 랜덤 액세스는이 코드는 잘 작동
는답변
string fileContents = File.ReadAllText("c:\\users.csv");
if (fileContents.Contains("[email protected]")) {
MessageBox.Show("Email already exists");
} else {
MessageBox.Show("Ok");
}
나는이 경우 텍스트 검색이 가장 합리적이라고 생각했습니다. 파일을 검색 가능한 데이터 구조로 파싱하는 데 소요되는 시간은 단순한 텍스트 검색보다 훨씬 길다. – SeeMoreGain
일종의 부정 행위 ..하지만 "수동으로 반복하지는 않습니다".. – user2864740
@digthewells, 고맙습니다 ... 나는 마법 같은 것을 꿈꾸고 있습니다. 모든 행을 읽고 싶지 않습니다. "이메일"열을 읽고 거기서 검색하고 싶습니다. 가능한가요? - CrownFord 11 분 전 – CrownFord
한 가지 방법이 될 수 있습니다 :
string[] lineOfContents = File.ReadAllLines(@"C:\users.csv");
string email="[email protected]";
if (lineOfContents.Contains(email))
{
MessageBox.Show("Email already exists");
}
else
{
MessageBox.Show("Ok");
}
다른 방법이 될 수 있습니다 linq
를 사용하여 :
string[] lineOfContents = File.ReadAllLines(@"C:\users.csv");
string email="[email protected]";
if(lineOfContents.Any(e->e.Contains(email))){...}
하나 더 :
string temp = "";
if(String.Join(temp,lineOfContents).Contains(email);
가 또 다른 하나 BEST가 될 수 있습니다
if (Array.IndexOf(lineOfContents, email) >= 0)
{
//Your stuff goes here
}
내가 두려워 , wh ("모든 파일 내용을 읽는 것을 피할 수 있습니까?"직접 "전자 메일"로 이동하는 것을 선호합니다.) 상자에서 벗어날 수는 없습니다. 그러나보다 효율적으로 작업 할 수있는 유용한 유틸리티가 있습니다 (하지만 파일을 구문 분석하지는 않습니다).
좋은 사람은 다음과 같습니다
- A Fast CSV Reader
- CsvHelper (Nuget 패키지)
Microsoft에서 또 다른 좋은 일이 TextFieldParser Class입니다.
TextFieldParser
개체는 구조화 된 텍스트 파일을 구문 분석하기위한 메서드와 속성을 제공합니다.TextFieldParser
으로 텍스트 파일을 구문 분석하는 것은 텍스트 파일을 반복하는 것과 비슷하지만ReadFields
텍스트 필드를 추출하는 방법은 문자열을 분할하는 것과 유사합니다.TextFieldParser는 두 가지 유형의 파일을 분석 할 수는또는 고정 폭 구분. Delimiters 및 HasFieldsEnclosedInQuotes와 같은 일부 속성은 구분 된 파일을 사용하는 경우에만 의미가 있으며, FieldWidths 속성은 고정 폭 파일을 사용하여 작업 할 때만 의미가 있습니다.
고맙습니다 ... 모든 파일 내용을 읽는 것을 피할 수 있습니까? 나는 직접 "이메일"로갑니다. :) - CrownFord 9 분 전 – CrownFord
임의의 값을 "발견"하는 유일한 방법은 일치하는 항목이 발견 될 때까지 모든 레코드/데이터를 처리하는 것입니다. 적절한 SQL 엔진과 달리 CSV에는 본질적인 "인덱스"지원이 없습니다. 이진 검색은 정렬 된 열 (예 : ID)에서 수행 할 수 있지만 그렇게하는 것은 더 복잡하고 순서가 필요하며 차이가 발생하지 않을 가능성이 높습니다. – user2864740
@CrownFord -이 질문, 해결책 및 의견을 읽으면서 원하는 것이 무엇인지 이해해야합니다. 루핑이나 전체 파일을 메모리로 읽어 들이지 않고 텍스트 파일을 구문 분석하는 "검색"메커니즘은 없습니다 (csv는 SQL이 아닙니다). Word와 Excel (수십억 달러 소프트웨어)은 Ctrl + F가 작동하기 전에 파일을 메모리에로드해야합니다. – Tommy
@ 토미 우리가 DB 엔진의 개념을 이해한다면 가능할 것입니다. 나는 C# 개발 필드에서 새롭다. :) – CrownFord