2013-09-07 1 views
1

, если у меня есть текстовый файл с содержимым, разделенных табуляцией, как этонайти и удалить всю строку в текстовом файле

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 

Поскольку 00013 представляет item.Code и это уникальное значение, я хочу передать этот item.Code в качестве параметра найти и удалить целая линия.

После удаления содержимого файла операция будет

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

Еще раз, как я могу найти и удалить всю строку в текстовый файл? Должен ли я использовать linq? Как бы вы это сделали.

Thanks

+0

вы можете использовать вид или процедуру магазина для этого .. –

+1

это не дб содержания, по крайней мере, у меня нет доступа к БД. – 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 Спасибо большое :) –

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 = from line в File.ReadAllLines (path) ...'. – Tim

+1

У вас опечатка в последней строке должна быть 'result' вместо' list'. –

Смежные вопросы