linq更新或插入csv文件

时间:2016-06-07 14:45:58

标签: c# linq csv insert-update

我成功创建了一个c#类,它使用Jet在csv文件上执行SELECT字符串。但是,我真的需要一个UPDATE和/或INSERT声明,Jet显然不会允许它。我一直在研究使用LINQ,但似乎无法找到LINQ的UPDATE子句的任何示例。有人知道吗?或者可能是一个与LINQ不同的类,可以实现这个目标吗?

基本上,我想将csv文件读入内存并查询它(选择列或不同等),这对Jet很好,但我也想更新行并修改文本文件。

基本上:

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

并从csv中读取生效数据。

另外,我无法弄清楚如何使用LINQ按名称访问列。有什么建议吗?

到目前为止,我班级的构造函数似乎正在解析文件(我可以在手表和即时窗口中看到它),但我不知道如何从这里继续前进:

        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));

忽略'记录器',这是一个内部类,为了我们自己的目的将事物写入日志。

1 个答案:

答案 0 :(得分:0)

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

通常,您不能像记录文件那样随意更新文本文件。例如,考虑以下文本文件。

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

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

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