Я недавно начал использовать динамический linq для проекта, а также хотел сравнить даты без компонента времени.Динамический пример кода Linux Linq C # (Dynamic.cs) поддерживает фиксированный набор типов, и EntityFunctions не является одним из них.
Но, немного поэкспериментировав, я обнаружил, что просто добавив EntityFunctions для массива предопределенных типов позволяет использовать TruncateTime и, вероятно, другие EntityFunctions методы тоже.
Вот что предопределенные типы Dynamic.csМассив выглядит как в моем проекте:
static readonly Type[] predefinedTypes = {
typeof(Object),
typeof(Boolean),
typeof(Char),
typeof(String),
typeof(SByte),
typeof(Byte),
typeof(Int16),
typeof(UInt16),
typeof(Int32),
typeof(UInt32),
typeof(Int64),
typeof(UInt64),
typeof(Single),
typeof(Double),
typeof(Decimal),
typeof(DateTime),
typeof(TimeSpan),
typeof(Guid),
typeof(Math),
typeof(Convert),
typeof(System.Data.Objects.EntityFunctions) // JimM
};
С помощью этого измененного файла Dynamic.cs я могу создавать динамические запросы linq, включая выражения, подобные примеру PurchaseDate в вашем вопросе.