C# C可恢复库将文本文件视为数据库表?

C# C可恢复库将文本文件视为数据库表?,c#,text-files,C#,Text Files,我想在文本文件中存储逗号或制表符分隔的值,这并不重要 我正在寻找一个可重用的库,它可以像处理sql表一样处理这个文本文件中的数据 我需要从…中选择*。。。并从其中删除ID=。。。。。。ID将是文本文件中的第一列 有没有做这种事情的代码丛项目 我不需要复杂的功能,如加入或关系。我只有一个文本文件,它将成为一个数据库表。使用ODBC。有一个用于csv文件的Microsoft文本驱动程序。我认为这是可能的。我没有测试您是否可以通过ODBC进行操作,但您可以轻松地进行测试。 对于查询,您还可以使用lin

我想在文本文件中存储逗号或制表符分隔的值,这并不重要

我正在寻找一个可重用的库,它可以像处理sql表一样处理这个文本文件中的数据

我需要从…中选择*。。。并从其中删除ID=。。。。。。ID将是文本文件中的第一列

有没有做这种事情的代码丛项目


我不需要复杂的功能,如加入或关系。我只有一个文本文件,它将成为一个数据库表。

使用ODBC。有一个用于csv文件的Microsoft文本驱动程序。我认为这是可能的。我没有测试您是否可以通过ODBC进行操作,但您可以轻松地进行测试。 对于查询,您还可以使用linq。

使用linq到CSV

如果在这种情况下不是CSV

让您的文件每行保存一条记录。运行时的每条记录都应该读入record类型的集合[假设record是表示单个记录的自定义类]。您可以对集合执行LINQ操作并将集合写回文件。

您看过库了吗?它能够将文本文件读取并解析为CLR对象。再加上LINQtoObjects之类的功能,您就拥有了所需的功能

public class Item
{
    public int ID { get; set; }
    public string Type { get; set; }
    public string Instance { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        string[] lines = File.ReadAllLines("database.txt");

        var list = lines
                .Select(l =>
                    {
                        var split = l.Split(',');
                        return new Item
                        {
                            ID = int.Parse(split[0]),
                            Type = split[1],
                            Instance = split[2]
                        };
                    });

        Item secondItem = list.Where(item => item.ID == 2).Single();

        List<Item> newList = list.ToList<Item>();
        newList.RemoveAll(item => item.ID == 2);

        //override database.txt with new data from "newList"
    }
}

您还可以概述更高级的解决方案

我还建议使用ODBC。这不会使部署复杂化,整个配置可以在连接字符串中设置,因此您不需要DSN

与schema.ini文件一起,您甚至可以设置列名和数据类型,请选中此项


或者:

我应该在问题中说,我不想使用odbc,因为这意味着额外的管理和部署麻烦。但是谢谢你的建议。@JL:如果使用ODBC,你需要部署什么?当您使用ODBC使用Access数据库文件时,是否部署了任何内容?@Hermant-这是一个事后考虑的要求,用于将内部内容存储到应用程序中,因此,我不想再创建另一个部署步骤。我正在考虑使用一个数据集,然后将其序列化为一个文本文件。伙计们,认真地说,第一个发布SQLLite作为答案的人,接受了它,从没有听说过它的20分钟到实现,这是非常出色的。是的,包括创建db structureWhoops。当你半醒半醒,手指没有帮助时,回答问题的问题。
newList.RemoveAll(item => item.ID == 2);