Question

I have a linq Entity called Enquiry, which has a property: string DateSubmitted.

I'm writing an app where I need to return IQueryable for Enquiry that have a DateSubmitted within a particular date range.

Ideally I'd like to write something like

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);

Obviously Linq to EF doesn't recognise int.Parse, so I think I can achieve what I want with an Expression method that returns a predicate???

I've been playing around with PredicateBuilder and looking all over but I've successfully fried my brains trying to work this out. Sure I could add another property to my Entity and convert it there but I'd really like to understand this. Can anyone explain or give an example/link that doesn't fry my brains?

Thanks in advance

Mark

Was it helpful?

Solution

If you know your date strings are valid, and they're really in that order (which is a natural sort order) you might be able to get away with string comparisons:

IQueryable<Enquiry> query = Context.EnquirySet.AsQueryable<Enquiry>();
string dateStart ="20090729";
string dateEnd = "20090930";

query = (from e in query
     where(enq => enq.DateSubmitted.CompareTo(dateEnd)) < 0)
     where(enq => enq.DateSubmitted.CompareTo(dateStart)) > 0)
     select e);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top