應答時:去下面找我回答這個問題。使用日期比較查詢的SharePoint OData服務
我試圖使用LINQ的ASP.NET MVC 3項目消耗的SharePoint 2010的OData。我使用帶有Razor視圖引擎的ASP.NET MVC 3項目模板(VS 2010)創建了一個默認項目。我添加了一個指向我的SharePoint 2010網站的服務參考。
在我的HomeController的Index方法(這只是一個測試項目),我創建了一個變量來保存上下文和上下文變量的憑據屬性設置爲當前默認憑據。
像下面的鏈接查詢工作正常,我可以使用創建的變量來訪問任何數據:
var query = from a in context.Alerts
select a;
這個查詢只是獲取所有的公告,從列表中的SharePoint網站稱爲警報。此列表包含標題,內容,開始日期和到期日期的字段。
當我查詢更改爲以下,我沒有得到預期的結果:
var query = from a in context.Alerts
where (a.Begins < DateTime.Now)
select a;
該查詢忽略了日期的時間部分。例如,如果a.Begins包含昨天的日期時間,則查詢將返回AlertItem。另一方面,如果a.Begins包含具有當前日期的日期時間(但是較早的時間),則比較返回false(並且a.Begins == DateTime.Now返回true)。
如果我這樣做,第二LINQ查詢按預期工作:
var query = (from a in context.Alerts
select a).ToList();
var query2 = from q in query
where (q.Begins < DateTime.Now)
select q;
我缺少什麼?
號時,針對SharePoint 2010中的OData源未查詢它工作得很好。我描述的行爲僅在針對SharePoint 2010 OData源時纔會發生。但要回答你的問題;不,我沒有在任何地方使用DateTime.Today。 – RWGodfrey
事實上,a.Begins == DateTime.Now是很奇怪的...另外,它聽起來像一旦你有記錄「在內存中」,即在第一個查詢中,DateTime子句工作得很好......我想知道如果在DateTime周圍有任何已知的OData問題? – Joe
到目前爲止,必應/谷歌/雅虎搜索小時以及更多小時的反覆試驗一無所獲。我希望有人能夠訪問SharePoint 2010將運行類似的測試並報告其結果。 – RWGodfrey