Я пытаюсь написать запрос в контроллер, похожий на то, что у меня есть в моей SQL хранимой процедуры:Правильное использование Select() и где() в одном операторе
Select * FROM TableName Where aDate >= beginDate and aDate <= endDate
В мой контроллер, я объявили 2 переменные, которые будут получать входные значения из моего просмотра файла:
DateTime? startDate = input.BeginDateInput;
DateTime? endDate = input.EndDateInput;
и переменной д, которая принимает значения из БД
var q = db.tblName.AsQueryable();
В настоящее время у меня есть Выбор на основе таблицы всех значений, глядя, как следующее:
var data = q.Select(
p =>
new
{
//...
WarrantyExpDate = p.WarrantyExpDate.ToShortDateString(),
//...
});
Когда я пытаюсь добавить .гд() в конце
Select(...).Where(DateTime.Compare(Convert.ToDateTime(WarrantyExpDate), (DateTime)startDate)>0)
(укоротить для время), я получаю сообщение об ошибке WarrantyExpDate was not in the current context
. Проведя некоторое исследование, я попытался воссоздать предложение от that thread для подкачки select и где, но он возвращал ту же проблему.
Может ли кто-нибудь указать мне в правильном направлении на то, что я делаю неправильно? Как сделать так, чтобы и Select, и Where распознавали одну и ту же переменную?
'Where' требует делегата, который обычно принимает форму лямбда-выражения. В вашем случае, скорее как '.Where (n => DateTime.Compare (Convert.ToDateTime (n.WarrantyExpDate) ...' –
@BJMyers Я выполнил предлагаемые быстрые исправления, и, похоже, эта ошибка устранена. вы забудете даже такие основы. Я дам вам знать завтра о результатах после того, как я его испытаю. –