我想檢查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