什么是可以替换SQL等数据库的数据结构(如列表,数组等)?
我希望它拥有尽可能多的类似数据库的功能,比如查询选择等......
如果没有,建议结构应该是什么样的
编辑:
我认为数据表已经足够好了,答案是
答案 0 :(得分:1)
假设您已经了解Entity Framework作为ORM和访问数据库的网关,以下是您需要考虑的一些替代方案。
针对小数据量的一个直接快速解决方案是serialization。
您可以选择:
序列化允许您存储和检索对象图,而不必担心设置DB和连接。但是没有提供复杂的搜索和更新功能。
您可能想要探索的另一件事是NoSQL个数据库。
查看LiteDB以开始使用此概念。
答案 1 :(得分:1)
如果您要使用实际的SQL数据库,那么 (按MSDN):
private static void CreateCommand(string queryString, string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
}
如果您希望不使用实际的SQL数据库并尝试直接在代码中保存数据,关系等(不确定为什么要这样做),您可以为它创建自己的自定义类。你想要包含某种形式的表,以及可以查看表的实例等的搜索方法。虽然你需要实现许多功能,所以如果这样做很难做到您正在尝试复制真正SQL数据库的所有功能。
答案 2 :(得分:1)
最简单的数据结构是F#中的record
或C#中的class
。这将代表你的桌子。表的集合将代表数据库。您可以使用query expressions(也称为Linq)进行查询,并按照上面的指示对其进行序列化。您还可以使用DataTable。如果您只是在寻找数据库的内存表示形式,那么可以使用SQLite
。
如果您只想访问数据库,可以使用F#中的SQLProvider或F#和C#中的Dapper来访问数据库。
以下是一个包含记录列表和查询表达式的示例:
open System
type Row = {
Id: bigint
Name: string
Address: string
}
let table = [
{Id = 100I; Name = "Joe"; Address = "NYC"}
{Id = 101I; Name = "Jane"; Address = "KC"}
{Id = 102I; Name = "Jim"; Address = "LA"}
]
let notInNYC =
query {
for user in table do
where (user.Address <> "NYC")
select user.Name
}
|> Seq.toList
//val notInNYC : string list = ["Jane"; "Jim"]