C# 如何在RavenDB Lucene查询中包含日期条件

C# 如何在RavenDB Lucene查询中包含日期条件,c#,linq,lucene,ravendb,C#,Linq,Lucene,Ravendb,我在RavenHQ有以下索引 from doc in docs let Tag = doc["@metadata"]["Raven-Entity-Name"] where Tag != null && Tag=="Email" select new { Tag, LastModified = (DateTime)doc["@metadata"]["LastModified"], DateAdded=doc.DateAdded }; 此外,我也做了DateAdded索引分析。

我在RavenHQ有以下索引

from doc in docs 
let Tag = doc["@metadata"]["Raven-Entity-Name"]
where  Tag != null && Tag=="Email"
select new { Tag, LastModified = (DateTime)doc["@metadata"]["LastModified"], DateAdded=doc.DateAdded };
此外,我也做了DateAdded索引分析。我想写一个Lucene查询,在where子句中包含小于date的条件

我试着跟着,但没用

Where("DateAdded: [NULL TO 2012-12-31").ToList()
C#中在where子句中提供日期的确切方式是什么


谢谢。

最好的方法是使用Raven的API,而不是自己构造查询:

var date = new DateTime(2012, 12, 31, 0, 0, 0, DateTimeKind.Utc);
session.Advanced.LuceneQuery<object>().WhereLessThan("LastModified", date);
var date=new DateTime(2012,12,31,0,0,0,DateTimeKind.Utc);
session.Advanced.LuceneQuery().WhereLessThan(“LastModified”,日期);
如果你必须自己做,它是这样的:

session.Advanced.LuceneQuery<object>()
                .Where("LastModified: {NULL TO 2012-12-31T00:00:00.0000000Z}")
session.Advanced.LuceneQuery()
.Where(“LastModified:{NULL TO 2012-12-31T00:00:00.0000000 z}”)
Raven使用paired with datetime格式,小数点后7位,这是由提供的,从with
datetime.ToString(“o”)
获得

请注意,您说的是“小于”,因此我使用了专用括号
{TO}
。如果您想要“小于或等于”,则可以使用包含括号的
[TO]

如果包含了结尾字符
]
,则问题中提供的查询将有效。但是,它不是您想要的,因为任何带有时间分量的
LastModified
条目都会落在您指定的值之后


还要注意,上次修改的
元数据存储为UTC。

谢谢。你救了我一天。