2013-09-07 2 views
1

내가 00013item.Code을 대표하는이찾아 txt 파일에서 전체 줄을 삭제

00013 ITEM1 20.00 2 1 01 0.000 2 0.000 0.00 0.000 0.00  
00014 ITEM2 20.00 1 1 01 0.000 2 0.000 0.00 0.000 0.00 

때문에 같은 집 계기로 구분 내용 TXT 파일이이 내가 매개 변수로이 item.Code을 전달하고 찾으려는 고유 한 값입니다 경우 전체 줄을 삭제하십시오. 삭제 작업 파일 내용 후

나는 방법을 찾아 txt 파일에서 전체 라인을 삭제할 수

00014 ITEM2 20.00 1 1 01 0.000 2 0.000 0.00 0.000 0.00 

한 번 더

것입니까? 나는 linq을 사용해야합니까? 어떻게 할 수 있니?

감사합니다.

+0

당신이 그것에 대해보기 또는 저장 프로 시저를 사용할 수 있습니다 .. –

+1

이 DB 만족하지, 적어도 내가 DB에 액세스 할 수 없습니다. – panjo

+0

그러면 테이블이 생성됩니다 –

답변

4

이 시도 :

void FilterFile(string fileName, string newFileName, string itemCode) 
{ 
    var mathcedLines = File.ReadLines(fileName).Where(l => !l.StartsWith(itemCode)); 
    File.WriteAllLines(newFileName, mathcedLines); 
} 
+1

OP의 요구 사항을 충족시키지 못합니다. OP는 일치 된 줄을 지우지 않고 지우려합니다. – Tim

+0

@Tim Thanks a lot :) –

2

예, LINQ를 사용할 수 있습니다.

var result = from line in File.ReadAllLines(path) 
      where !line.StartsWith("00013") 
      select line; 
File.WriteAllLines(path + "new", result); 

이는 파일 작업을 포함합니다. 이제 남은 질문에 관해서, 나는 당신이 무엇을 묻고 있는지 100 % 이해하지 못한다는 것을 인정할 것이다.

파일 작업을 위해 고려해야 할 다른 옵션은 List에 줄을로드 한 다음 FindIndex()을 사용하고 RemoveAt()을 사용하는 것입니다. 이 방법은 단 하나의 항목 만 제거합니다. 우리가 찾고자하는 값이 유일하다는 데이터에 대한 제약이 있기 때문에 문제가되지 않습니다.

+2

'var result = File.ReadAllLines (path) ...'줄에서도 줄여 쓸 수 있습니다. – Tim

+1

마지막 줄의 오타가'list' 대신'result'이어야합니다. –

관련 문제