用于处理多列数据的小型数据库 C# 库/代码

本文关键字:数据库 代码 小型 处理 数据 用于 | 更新日期: 2023-09-27 18:35:25

我正在寻找一个多列数据库,但即使是超过一兆字节的SQLite似乎也有些矫枉过正(除非你使用这样的东西,否则它不适用于C#)。我最多只想要 100-500k 的代码。这里最好的选择是什么?

C# 中的泛型字典在一定程度上很有用,但默认情况下,它不允许从给定值中检索键。同样,我可能有两列以上的数据,即使我使用BiDictionary将值作为类/结构(对于多个值),我也需要找到n列值的键,然后找到键的新o列值。所以这有点不方便(加上该链接是一个不完整的实现,甚至没有"set"命令)。

下面是我可能创建的表的简单示例(但是我可能有十几列或一千行):

name       type colour  length
orange     a    orange  5
apple      a    green   4
banana     c    yellow  7
strawberry b    red     3
blackberry b    black   2
gooseberry b    green   2

我想从任何其他值中检索/设置表中的任何值,最好使用 LINQ 或类似 SQL 的查询以及快速检索/写入和大型数据集(如果可能)。

用于处理多列数据的小型数据库 C# 库/代码

DataSet类可能非常适合您正在做的事情 - 您可以直接从 XML(ReadXml 方法)将数据加载到其中,这将转换为内存表。

使用表示数据的DataTable(或多个及其关系)可以使用 LINQ 进行查询。

基于Oded的回答和这个老问题,我开始编写一些示例代码,它是一种享受:

//////////////////////////////////////////////
//// Setting up the table is as simple as this: 
DataTable table = new DataTable("fruit");
table.Columns.Add("name", typeof(string) );
table.Columns.Add("type", typeof(char));
table.Columns.Add("colour", typeof(string));
table.Columns.Add("length", typeof(int));
//////////////  name, type, colour, length
table.Rows.Add("orange", 'a',"orange", 5);
table.Rows.Add("apple", 'a',"green", 4);
table.Rows.Add("banana", 'c',"yellow", 7);
table.Rows.Add("strawberry", 'b',"red", 3);
table.Rows.Add("blueberry", 'b',"black", 1);
table.Rows.Add("gooseberry", 'b',"green", 2);
//////////////////////////////////////////////
////// Accessing the data via Linq!
var results = table.AsEnumerable()
    .Where(row => row.Field<char>("type") == 'b')
    .OrderBy(row => row.Field<int>("length"))
    .Select(row => row.Field<string>("name") +": "+row.Field<string>("colour"));                
foreach(string s in results) Console.WriteLine(s);
///////////////////////////////

输出为:

blueberry: black
gooseberry: green
strawberry: red

SQL Server紧凑版在.NET中免费提供:http://en.wikipedia.org/wiki/SQL_Server_Compact

它使用平面.sdf文件存储数据,您可以针对它编写SQL查询。