Вы используете EntityDataSource.Это очень не-linq тип, который позволяет вам использовать строки, определенные во время выполнения, для изменения запросов.Более методика linq-ish предпочла бы, чтобы строка была частью языка программы, а компилятор превратил бы ее в дерево выражений (как другие опубликовали).Этот подход linq-ish не будет работать, пока вы используете EntityDataSource.
Из статьи MSDN, ссылающейся на EntityDataSource.Where , похоже, вам нужно использовать магическое слово"это", чтобы описать строку.Затем вы должны передать параметры в коллекцию .WhereParameters
.
Код:
using (myEntities = new RamRideOpsEntities())
{
var validDates = (from a in myEntities.AdminOptions
select new { a.ValidDate1, a.ValidDate2 }).FirstOrDefault();
if (validDates != null)
{
RidesEDS.Where = @"it.TimeOfCall >= @ValidDate1 AND it.TimeOfCall <= @ValidDate2";
RidesEDS.WhereParameters.Add(@"ValidDate1", DbType.DateTime, validDates.ValidDate1.ToString());
RidesEDS.WhereParameters.Add(@"ValidDate2", DbType.DateTime, validDates.ValidDate2.ToString());
}
}