linq更新或插入csv文件

linq to update or insert on a csv file

我成功制作了一个使用 Jet 在 csv 文件上执行 SELECT 字符串的 c# class。但是,我确实需要一个 UPDATE and/or INSERT 语句,而 Jet 显然不允许这样做。我一直在研究使用 LINQ,但似乎也找不到 LINQ 的 UPDATE 子句的任何示例。有人知道吗?或者可能是不同于 LINQ 的 class 可以完成此任务?

基本上,我想将一个 csv 文件读入内存并对其进行查询(select 列,或不同的,等等),这对 Jet 来说很好,但我也想更新行并修改文本文件。

基本上:

UPDATE table 
SET col3 = 42 
WHERE col1='mouse', col2='dolphins'; 

并使从 csv 读取的数据生效。

另外,我不知道如何使用 LINQ 按名称访问列。有什么建议吗?

到目前为止,我的 class 的构造函数似乎可以正常解析文件(我可以在手表中看到它并立即 windows),但我不知道如何继续来自这里:

        string Method = this.ToString();
        this.strFilePath = filePath;
        this.strDelim = delim;

        Logger.Debug("Starting", Method);
        try
        {
            fileLines = File.ReadAllLines(filePath);
        }
        catch (Exception Ex)
        {
            Logger.Error(Ex, Method);
        }
        this.fileTable = fileLines.Select(l => l.Split(delim));

忽略 'Logger',这是一个内部 class 出于我们自己的目的将内容写入日志。

由于文本文件的组织方式,您的要求无法轻易完成。

一般来说,您不能像更新记录文件那样任意更新文本文件。例如,考虑以下文本文件。

line1,43,27,Jim
line2,29,32,Keith

现在,您想将第 1 行的 43 更改为 4300。这涉及向文件添加两个字符。因此,您最终不得不将 43 之后的所有内容向下移动两个空格,然后插入 00。但是将所有内容向下移动两个空格需要扩展文件并移动整个文本。

文本文件通常用于顺序访问:读取和追加。插入或删除会影响超出修改点的整个文件。除非您打算在每次更改时重新编写整个文件,否则您根本不想使用文本文件来保存经常更改的数据。