Удалить всю строку в текстовом файле на основе элемента в таблице? - PullRequest
0 голосов
/ 27 марта 2019

В настоящее время у меня есть таблица, сгенерированная моим действием get. Он извлекает данные из текстового файла и разбивает их по конвейеру, поэтому выполняет следующие действия ...

This|03-26-2019 01:14:53 PM
is a test|03-26-2019 01:15:08 PM
of the|03-26-2019 01:15:16 PM 
EMERGENCY BROADCAST SYSTEM|03-26-2019 01:15:29 PM 
!!!

становится

Example table

Ниже мой стол

<table class="table table-striped">
    <tr>
        <th>Paygroups</th>
        <th>Date added</th>
        <th>Modify</th>
    </tr>
    @foreach (var record in Model.Files)
    {
        <tr>
            <td>@record.Paygroups </td>
            <td>@record.DateAdded </td>
            <td>@Html.ActionLink("Edit", "Edit", "UpdateFiles") | @Html.ActionLink("Delete", "Delete", "UpdateFiles") </td>
        </tr>

    }
</table>

и ниже мой метод удаления

    [HttpPost]
    public ActionResult Delete(string Paygroup)
    {
        if (ModelState.IsValid)
        {
            var fullpath = Path.Combine(Server.MapPath("~/sourcefiles"), "paygroup.txt");
            System.IO.File.WriteAllLines(fullpath, System.IO.File.ReadLines(fullpath).Where(l => l != Paygroup).ToList());
        }
        return RedirectToAction("Edit", "UpdateFiles");
    }

Очевидно, что код там не будет работать как есть, так как он ищет платную группу, введенную в поле редактора, для отправки в качестве "Paygroup". Проблема в том, что мой текстовый файл настроен как paygroup | datetime, он не сможет найти строку, если введена только paygroup.

Я думал о том, чтобы прочитать весь файл в массив, сохранить каждую строку, выполнить поиск в массиве «paygroup», затем удалить строку, в которой он находился, и записать новый массив в текстовый файл. Я подумал, что это можно было бы лучше оптимизировать, если бы я действительно мог поместить кнопку удаления в строку рядом с платежной группой и добавленной датой, чтобы он мог получить данные строк, объединить их с конвейером и удалить из текстового файла. ? Хотя я не совсем уверен, с чего начать.

1 Ответ

1 голос
/ 27 марта 2019

Если строка текста в файле всегда начинается с "группы выплат" (и символа канала), то почему бы просто:

.Where(l => !l.StartsWith($"{Paygroup}|"))

или в более раннем синтаксисе:

.Where(l => !l.StartsWith(string.Format("{0}|", Paygroup)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...