CRM 2011 - Сравнение лет в запросе LINQ - выдает ошибку: недопустимое условие «где».Член сущности вызывает неверное свойство или метод - PullRequest
1 голос
/ 03 января 2012

Я пробовал несколько методов для сравнения лет в дате, но каждый раз, когда я получаю условие «Недопустимо где». Элемент сущности вызывает недопустимое свойство или метод. »- ошибка!

Методы, которые я использовал:

var openInvoices = orgContext.CreateQuery<Invoice>().Where(i => i.SKY_InvoiceDate.Value.Year == 2010);
var openInvoices = orgContext.CreateQuery<Invoice>().Where(i => i.GetAttributeValue<DateTime?>("SKY_InvoiceDate".ToLower()).Value.Year == 2011); 
var openInvoices = orgContext.CreateQuery<Invoice>().Where(i => i.SKY_InvoiceDate.Value.Year.Equals(2010));

Есть ли способ получить все счета за 2011 год?

Спасибо за помощь!

1 Ответ

2 голосов
/ 03 января 2012

Проблема в том, что вызов свойства Year в DateTime не может быть правильно переведен. Простой обходной путь:

var openInvoices = orgContext.CreateQuery<Invoice>()
    .Where(i =>
        i.SKY_InvoiceDate.Value >= new DateTime(2010, 1, 1)
        && i.SKY_InvoiceDate.Value < new DateTime(2011, 1, 1)); 
...