我想检查1天创建的记录,下面是我的代码。我的问题是,即使我有一场比赛,它也会返回任何记录。Linq |日期|减号与匹配问题
即使我在LinqPad上运行它,它只是输出空白的结果。
from x in Users
where (DateTime.Today - x.CreatedDate).ToString().Equals("1.00:00:00")
select x
,但是当我尝试删除 “其中”
from x in Users
select x
这里有可能会导致下面,你可以看到,有1场比赛:
ToDay : 8/7/2009 12:00:00 AM | CreatedDate : 8/6/2009 12:00:00 AM | Result : 1.00:00:00 | Condition : True
ToDay : 8/7/2009 12:00:00 AM | CreatedDate : 8/7/2009 12:00:00 AM | Result : 00:00:00 | Condition : False
ToDay : 8/7/2009 12:00:00 AM | CreatedDate : 8/7/2009 12:00:00 AM | Result : 00:00:00 | Condition : False
ToDay : 8/7/2009 12:00:00 AM | CreatedDate : 8/7/2009 12:00:00 AM | Result : 00:00:00 | Condition : False
ToDay : 8/7/2009 12:00:00 AM | CreatedDate : 8/7/2009 12:00:00 AM | Result : 00:00:00 | Condition : False
ToDay : 8/7/2009 12:00:00 AM | CreatedDate : 8/7/2009 12:00:00 AM | Result : 00:00:00 | Condition : False
ToDay : 8/7/2009 12:00:00 AM | CreatedDate : 8/7/2009 12:00:00 AM | Result : 00:00:00 | Condition : False
ToDay : 8/7/2009 12:00:00 AM | CreatedDate : 8/7/2009 12:00:00 AM | Result : 00:00:00 | Condition : False
NUnit.Framework.AssertionException: Expected: greater than 0
But was: 0
我运行这在IQueryable,AddDays和类似的不支持,即使下面的一些帖子将在LinqPad上运行,但仍然不支持在C#上的IQueryable。
,可能的解决方案是:
IList<Users> users = new List<Users>();
var qry = from x in Users
select x;
foreach(user in qry)
{
if(!DateTime.Today - x.CreatedDate).ToString().Equals("1.00:00:00")) continue;
users.Add(user);
}
..
似乎有一个语法错误,@jocob。对不起,我在Linq上也是1天,你能再次提供上面的正确语法吗? – 2009-08-06 23:30:59
方法'System.TimeSpan Subtract(System.DateTime)'不支持对SQL的转换。 仅供参考,我正在使用上面的服务层,这是通常的IQueryable(C#)形式 – 2009-08-06 23:35:39
啊。 Linq to Sql不支持日期添加和减去功能(虽然我听到4.0会)。这意味着你的函数(DateTime.Today - x.CreatedDate)也不会产生结果。我不确定为什么它会吞掉减法,可能是由于ToString()。 – 2009-08-07 01:26:49