ОТВЕТ: Перейдите ниже, чтобы найти мой ответ на этот вопрос.
Я пытаюсь использовать OData SharePoint 2010 из проекта ASP.NET MVC 3 с использованием LINQ. Я создал проект по умолчанию, используя шаблон проекта ASP.NET MVC 3 с механизмом просмотра Razor (VS 2010). Я добавил ссылку на службу, указывающую на мой сайт SharePoint 2010.
В методе Index моего HomeController (это всего лишь тестовый проект) я создал переменную для хранения контекста и установил для свойства Credentials переменной контекста текущие учетные данные по умолчанию.
Запрос ссылки, подобный следующему, работает нормально, и я могу использовать созданную переменную для доступа к любым данным:
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;
Что мне не хватает?