c# - Linq: Date less that x, but next record date is greater that x -


i got records in database. each record has field "date". given date=x need find records date value less x, next record date greater of x.

example:

id  date -------------- 1   12.03.2013 2   15.03.2013 3   18.03.2013 

now, got x=16.03.2013, , need linq return record:

 2  15.03.2013 

but! x=15.03.2014 should return nothing (because there record smaller date, next record has same date x)

how can this?

the simplest approach imo find record would find, , check date afterwards:

var result = db.table                .where(x => x.date <= target.date)                .orderbydescending(x => x.date)                .firstordefault(); if (result != null && result.date == target.date) {     result = null; } 

or could in query using secondary where clause after filtering single result:

var result = db.table                .where(x => x.date <= target.date)                .orderbydescending(x => x.date)                .take(1)                .where(x => x.date != target.date)                .firstordefault(); 

note doesn't work if values less x (so there's no "next" record @ all). haven't yet worked out way handle that.