проблемы с методом LINQ, не возвращающим никаких результатов - PullRequest
0 голосов
/ 01 августа 2020

В настоящее время мой запрос LINQ в моем списке не возвращает результаты поиска. Я пытаюсь передать методу строку, в которой он просматривает все поля FirstName, LastName, and Username объектов. Вот мой метод:

        public IEnumerable<Volunteer> Search(string key)
        {
            IEnumerable<Volunteer> searchResults = _volunteerList.Where(v => v.FirstName == key 
                                                                        || v.LastName == key 
                                                                        || v.Username == key);

            return searchResults;
        }

Я проверил, что строка key передается в метод и содержит правильное значение «Bob».

вот список объектов в моем _volunteerList:

                new Volunteer {id = 1, FirstName = "Bob", LastName = "Evans", Username = "BEvans", Password= "1991", StreetAddress = "1995 StreetName Ave", State = "FL", City = "Jacksonville", ZipCode = 32225, ApprovalStatus = "Approved"},
                new Volunteer {id = 2, FirstName = "Jim", LastName = "Evans", Username = "JEvans", Password= "1992", StreetAddress = "1995 StreetName Ave", State = "FL", City = "Jacksonville", ZipCode = 32225, ApprovalStatus = "Approved"}

Для меня из всего, что я искал, синтаксис оператора LINQ выглядит правильным и не возвращает никаких ошибок (по крайней мере, в VS19). Есть ли в этом что-то, чего мне не хватает?

Заранее спасибо.

FYI : Соответствующие методы / код:

Homecontroller - Поиск ()

        [HttpGet]
        public ActionResult Search(string key)
        {

            IEnumerable<Volunteer> results = _volunteerRepository.Search(key);

            ViewData.Model = results;
            return View("SearchResults");
        }

Управление волонтерами (Просмотр) - Форма

<form method="get" asp-action="Search" >
    <table>
        <tr>
            <td><input type="text" placeholder="Search" name="Key" value ="Bob" class="form-control"/> </td>
            <td><input type="submit" value="Search" class="btn btn-primary"></td>
        </tr>
    </table>
</form>

Ответы [ 3 ]

0 голосов
/ 01 августа 2020

Я буду откровенен ... Я не знаю, что я сделал, но теперь в моем представлении SearchResults отображается правильный результат.

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

Я ценю предпринятую помощь.

0 голосов
/ 01 августа 2020

вы указали _volunteerList как List<Volunteer> или IEnumerable<Volunteer>? Кажется, есть проблема с преобразованием типов. Попробуйте оставить List<Volunteer> везде, где используется IEnumerable<Volunteer>. Посмотрим, работает ли это.

0 голосов
/ 01 августа 2020

Недавно у меня была такая же проблема, я поместил ее в конец моего IEnumerable. список ToList ();

IEnumerable<Volunteer> searchResults = _volunteerList.Where(v => v.FirstName == key 
                                                                        || v.LastName == key 
                                                                        || v.Username == key).ToList();
...