如何在列表的1行中仅替换1列

本文关键字:替换 1列 1行 列表 | 更新日期: 2023-09-27 18:29:25

我将文件文本中的所有行读取到List<>中。

但我有个问题。我只想更改1行文件文本中的1个元素(即列)。

当我发送电子邮件成功时,它会在我检查的这一行中更新时间。

此数据在文件文本中

    User1             abc@gmail.com           5/1/2016
// many rows.....

发送电子邮件成功后,它将更新为:

User1             abc@gmail.com           8/1/2016

当前,我必须使用AppendAllLine()函数添加行:

File.AppendAllLines(dataPath, (from i in Items select i.Serialize()).ToArray(), Encoding.Default);

我尝试过StreamWriter,但它不支持以下内容:

from i in Items select i.Serialize()).ToArray()

在这里我的代码更新时间。

if (time.Day == today.Day)
{
    flag = SendMail.sendDailyMail(listMail);
    if (flag == true)
    {
        rows.time = timeNow;
        List<DTOSaveFromFile> lst = new List<DTOSaveFromFile>(1);
        lst.Add(rows);
        DiskFile.Save(lst);
    }
}

类磁盘文件:

public static void Save(List<DTOSaveFromFile> Items)
{
    File.AppendAllLines(dataPath, (from i in Items select i.Serialize()).ToArray(), Encoding.Default);
}
public static List<DTOSaveFromFile> Load()
{
    string[] data = File.ReadAllLines(dataPath);
    return (from i in data select new DTOSaveFromFile(i)).ToList<DTOSaveFromFile>();
}

如何在列表的1行中仅替换1列

简单的方法是删除文件的内容,然后重新创建一个更新了所有数据的新文件:

public static void Save(List<DTOSaveFromFile> Items)
{
    File.Create(dataPath);
    File.AppendAllLines(dataPath, (from i in Items select i.Serialize()).ToArray(), Encoding.Default);
}

如果您的列表包含所有数据,则不会丢失任何内容。