我正在使用Subsonic (SimpleRepository)来查询我的SQL2008数据库。我正在尝试编写一个查询,该查询将计算两个字段之间的天数,并返回差值小于给定数字的记录。然而,我得到一个“该成员‘天’是不受支持的”错误。
有没有人能推荐一个替代查询?
下面是我尝试运行的查询:
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)我得到了相同的异常:成员'Days‘不受支持
我也试过了:
(c.LastSynchronizedOn == null || ((c.LastSynchronizedOn - c.CreatedOn) > new TimeSpan(7, 0, 0, 0)))I get:无法将参数值从TimeSpan转换为字符串。
发布于 2009-12-30 15:20:24
请检查字段LastSynchronizedOn和CreatedOn的数据类型,因为问题与SubSonic无关,但.Net正在报告(如果这是正确的说法),因为表达式(c.LastSynchronizedOn - c.CreatedOn)可能没有返回DateTime对象。
编辑:-根据您的评论,请尝试此
(c.LastSynchronizedOn.Value - c.CreatedOn).Days编辑(2):语句
(c.LastSynchronizedOn == null ||
((c.LastSynchronizedOn - c.CreatedOn) > new TimeSpan(7, 0, 0, 0)))返回布尔值(true或false)
试试这个:
var repository = new SimpleRepository("MyConnection",
SimpleRepositoryOptions.None);
var query = (from c in repository.All<Data.Customer>()
where ((c.LastSynchronizedOn ??
new DateTime(c.CreatedOn.Year, c.CreatedOn.Month,
c.CreatedOn.Day).AddDays(-7))
- c.CreatedOn).Days <= 7) select c).Distinct(); https://stackoverflow.com/questions/1978687
复制相似问题