Использование DateTime в Dynamic LINQ to Entities

Я использую LINQ to Entities для получения дат покупки товаров следующим образом:

where EntityFunctions.TruncateTime(order.PurchaseDate) == myPurchaseDate.date

Ключевым моментом здесь является то, что столбец DB содержит дату и время так что время для сравнения нужно вырезать. Этот код работает нормально.

Теперь я хочу сделать то же самое, используя динамический LINQ to Entities. Я использую dynamic.cs из папки образцов кода VS2010. Когда я кодирую:

.where("EntityFunctions.TruncateTime(PurchaseDate) == @0", myPurchaseDate.date);

или любой его вариант, я получаю сообщение об ошибке. Что мне нужно закодировать как строковое значение, чтобы это работало? (Поскольку я могу использовать .StartsWith или .Contains внутри строки, я надеюсь, что существует некоторая функция даты, которую динамический LINQ распознает.)

Я знаю, что могу создать динамический запрос LINQ для диапазона дат, концептуально:

PurchaseDate >= myPurchaseDate@midnight and PurchaseDate <= myPurchaseDate+23:59:59

На самом деле, возможно, диапазон дат более эффективен с точки зрения SQL Server, но я хотел бы знать, существует ли что-то вроде TruncateTime или ToShortDate в Dynamic LINQ to Entities.

7
задан user610342 9 February 2011 в 20:08
поделиться