如何在列表的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>();
}
简单的方法是删除文件的内容,然后重新创建一个更新了所有数据的新文件:
public static void Save(List<DTOSaveFromFile> Items)
{
File.Create(dataPath);
File.AppendAllLines(dataPath, (from i in Items select i.Serialize()).ToArray(), Encoding.Default);
}
如果您的列表包含所有数据,则不会丢失任何内容。