Member 13215299 Ответов: 1

Как отфильтровать поиск по 2 полям(напр. Имя и дата)


Я пытаюсь отфильтровать свой поиск по имени консультанта и дате создания записей. я использую datepicker для своего календаря и выпадающий список для выбора имени консультанта. На данный момент у меня есть поиск, работающий только для консультанта, я не могу понять, как добавить дату в качестве фильтра.

[HttpPost]
    public ActionResult TimesheetHistroy(Timesheet timesheet)
    {

        ViewBag.ConsultantNum = new SelectList(db.Consultants, "ConsultantNum", "FullName", timesheet.ConsultantNum);
        var timesheets = db.Timesheets.Include(t => t.Client).Include(t => t.Consultant).Where(a=>a.ConsultantNum==timesheet.ConsultantNum && EnterDate == timesheet.CaptureDate) ;
        var r = timesheets.ToList();
        return View(r);
    }


Что я уже пробовал:

Я пробовал использовать его независимо, но мне нужно, чтобы они работали вместе

1 Ответов

Рейтинг:
1

Bryian Tan

Я предполагаю a.EnterDate это тип DateTime или Date, таймшит.CaptureDate строка возврата плагин меню выбора даты

Вы не упомянули, в чем проблема. Я далее предполагаю, что код выбросил ошибку??? потому что код пытается сравнить строку и дату?

Есть несколько вещей, чтобы смотреть на.

1. Формат даты отмечать. Убедитесь, что вы закодировали его в формат даты возврата, например, 28.05.2017 или в соответствии с требованиями.

$(function () {
            $('#CaptureDate').datepicker({
                dateFormat: 'mm/dd/yy' //somehow this return 05/28/2017 vs 05/28/17
            });
        });


2. Вот один из вариантов. Преобразуйте EnterDate в строку в формате mm/dd / yyyy и сравните ее с CaptureDate. Опять же, я далее предположил, что EnterDate не допускает null. Если это так, измените код, чтобы получить месяц на "A.EnterDate.Ценность.Месяц"

var timesheets = db.Timesheets.Include(t => t.Client).Include(
                t => t.Consultant).Where(a => a.ConsultantNum == timesheet.ConsultantNum &&
         SqlFunctions.Replicate("", 2 - SqlFunctions.StringConvert((double)a.EnterDate.Month).TrimStart().Length) +
         SqlFunctions.Replicate("0", 2 - SqlFunctions.StringConvert((double)a.EnterDate.Month).TrimStart().Length) +
                        SqlFunctions.StringConvert((double)a.EnterDate.Month).TrimStart() +

         SqlFunctions.Replicate("/", 2 - SqlFunctions.StringConvert((double)a.EnterDate.Month).TrimStart().Length) +
         SqlFunctions.Replicate("0", 2 - SqlFunctions.DateName("dd", a.EnterDate).Trim().Length) +
         SqlFunctions.DateName("dd", a.EnterDate).Trim() + "/" +

         SqlFunctions.DateName("year", a.EnterDate) == timesheet.CaptureDate).ToList();