如何解决通过 C# 进行简单的 LiteDB 查询我很挣扎!
所以,我想尝试一下 LiteDB,但我有点挣扎!
尝试将日志数据写入其中。所以,到目前为止我所拥有的(简化)
A 类(数据结构)
private class PerBarData
{
public DateTime ts { get; set; }
public double o { get; set; }
public double h { get; set; }
public double l { get; set; }
public double c { get; set; }
public double v { get; set; }
public Dictionary<int,double> r { get; set; }
}
我正在像这样将数据写入 LiteDB
// Get a collection (or create,if doesn't exist)
var col = db.GetCollection<PerBarData>("PerBarData");
Dictionary<int,double> dict = new Dictionary<int,double>();
for (int i=1; i<maxIndexes; i++)
{
dict.Add(i,plotBIAS[i]);
}
// Create your new customer instance
var pbd = new PerBarData
{
ts = Time[1],o = Open[1],h = High[1],l = Low[1],c = Close[1],v = Volume[1],r = dict
};
// Insert new customer document (Id will be auto-incremented)
col.Insert(pbd);
这似乎有效,因为确实正在添加记录。我可以在 LiteDB 工作室中看到这一点。我只能看到大概是序列化的文本。像这样的对象
/* 1 */
{
"_id": {"$oid": "6009b32dfb2026288486321a"}
}
/* 2 */
{
"_id": {"$oid": "6009b39dfb2026288486321b"}
}
所以 - 据推测,到目前为止,我是对的。所以,要检索一些数据。我想要的只是两个日期之间的数据,或者至少超过一个日期。所以,我试试这个
DateTime startDate = Time[CurrentBar-1];
DateTime endDate = Time[0];
var col = db.GetCollection<PerBarData>("PerBarData");
// Use LINQ to query documents (filter,sort,transform)
var results = col.Find(Query.GTE("ts",startDate));
foreach(var pbd in results)
{
pprint(pbd.ts.ToString());
}
但是,它通常只是挂在那里。当然,没有打印日期。我最初是在尝试 Query.Between 和 2 个日期。一样。
有人能把我推向正确的方向吗?我真的很想试一试。
谢谢。
解决方法
最后我设法很简单地解决了这个问题。替换查找查询,如下
var results = col.Find(x => x.ts >= startDate);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。