У меня есть linq Entity, называемый запросом, который имеет свойство: string DateSubmitted.Linq to EF Дерево выражений/Предикат int.Parse обходной путь
Я пишу приложение, где мне нужно вернуть IQueryable для запроса, который имеет DateSubmitted в определенном диапазоне дат.
В идеале я хотел бы написать что-то вроде
IQueryable<Enquiry> query = Context.EnquirySet.AsQueryable<Enquiry>();
int dateStart = int.Parse("20090729");
int dateEnd = int.Parse("20090930");
query = (from e in query
where(enq => int.Parse(enq.DateSubmitted) < dateEnd)
where(enq => int.Parse(enq.DateSubmitted) > dateStart)
select e);
Очевидно Linq к EF не признает int.Parse, так что я думаю, что я могу добиться того, что я хочу с помощью метода Expression, который возвращает предикат? ??
Я играл с PredicateBuilder и смотрел на все, но я успешно обжарил свои мозги, пытаясь это исправить. Конечно, я мог бы добавить другое свойство в свой Entity и преобразовать его туда, но я действительно хотел бы это понять. Может ли кто-нибудь объяснить или дать пример/ссылку, которая не жарит мои мозги?
Заранее спасибо
Марк
Это замечательное решение, спасибо, я, вероятно, воспользуюсь этим, спасибо !!! Для моего знания, хотя есть способ сделать такое сравнение с предикатом? Я медленно обдумываю это :-) – Mark
Ну, вы делали это с предикатом для начала. Я не уверен, что я действительно понимаю вопрос ... –
Jon Я думаю, что я искал более общий способ сравнения значений, когда требуется преобразование типа. У меня есть ситуации, когда свойства Entity отображаются в виде Enums, а строки должны сравниваться с int. Я думал, глядя на PredicateBuilder, я мог бы написать общий набор методов, которые могли бы, например, сделать меньше или больше, чем сравнение, преобразуя типы ввода в требуемый тип. Прошу прощения за недостаток знаний, я понимаю основы Основы Linq, но я пытаюсь использовать методы расширения, Expresison trees и Predicates. – Mark