我使用Subsonic(SimpleRepository)来查询我的SQL 2008数据库。我正在尝试编写一个查询,它将计算两个字段之间的天数,并返回差异小于给定数字的记录。但是,我得到“不支持成员'天'”错误。
有人可以提出替代查询吗?
这是我正在尝试运行的查询:
var repository = new SimpleRepository("MyConnection",
SimpleRepositoryOptions.None);
var query = (from c in repository.All<Data.Customer>()
where c.LastSynchronizedOn == null ||
(c.LastSynchronizedOn - c.CreatedOn).Days <= 7)
select c).Distinct();
编辑:
我试过了:
(c.LastSynchronizedOn == null || (c.LastSynchronizedOn.Value - c.CreatedOn).Days <= 7)
我得到同样的例外:不支持成员'天'
我也尝试过:
(c.LastSynchronizedOn == null || ((c.LastSynchronizedOn - c.CreatedOn) > new TimeSpan(7, 0, 0, 0)))
我得到:无法将参数值从TimeSpan转换为String。
答案 0 :(得分:0)
请检查字段LastSynchronizedOn
和CreatedOn
的数据类型,因为问题与SubSonic无关,但.Net正在抱怨(如果这是正确的方式),因为表达式{{1可能不会返回(c.LastSynchronizedOn - c.CreatedOn)
对象。
编辑: - 根据您的评论,请尝试此
DateTime
编辑(2):陈述
(c.LastSynchronizedOn.Value - c.CreatedOn).Days
返回布尔值(true或false)
试试这个:
(c.LastSynchronizedOn == null ||
((c.LastSynchronizedOn - c.CreatedOn) > new TimeSpan(7, 0, 0, 0)))