用于处理多列数据的小型数据库 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 的查询以及快速检索/写入和大型数据集(如果可能)。
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查询。