Лучший подход для расширенного поиска в ASP.Net MVC 3.0? - PullRequest
1 голос
/ 05 октября 2011


Я работаю над приложением ASP.net MVC 3.0 Razor View Engine.
У меня есть форма предварительного поиска, чтобы получить список найденных клиентов
Которые будут иметь поля типа

FirstName TextBox Фамилия TextBox DOB TextBox Адрес TextBox Пол DropDown Почтовый индекс TextBox Игнорировать адрес checkBox
Наконец, кнопка «Отправить».
У меня есть список клиентов в объекте списка.
Поле не обязательно для заполнения в форме поиска.
Когда пользователь нажимает кнопку поиска на основе значений, которые он указал в форме, my Logic должна возвращать результаты сопоставления из объекта List, который содержит все данные о клиенте.

Так что я хотел бы выбрать идею от вас.
написать лучшую логику, которая найдет Клиента на основе предоставленной пользователем информации.

Я начал с чего-то подобного

if (fname != "" && lname == "")
        {
            return _CustomerList.FindAll(p => p.FirstName == fname);
        }
        else if (fname == "" && lname != "")
        {
            return _CustomerList.FindAll(p => p.LastName == lname);
        }

        else if (fname != "" && lname != "")
        {
            return _CustomerList.FindAll(p => p.FirstName == fname && p.LastName == lname);
        }
return _CustomerList;

Не думаю, что это эффективный способ.

Любые советы будут большой помощью. Спасибо за чтение. :)

Ответы [ 2 ]

0 голосов
/ 13 июня 2014

Я думаю, что это поможет вам ..

if (!string.IsNullOrEmpty(lname) || ! string.IsNullOrEmpty(fname))

{

_CustomerList= _CustomerList.Where(x =>x.LastName.Contains(lname.ToUpper().Trim()) ||               
 x.FirstName.Contains(fname.ToUpper().Trim())
);

return _CustomerList.ToList();

}
0 голосов
/ 05 октября 2011

Вместо этого используйте Linq и IEnumerable<Customer> - вы можете при необходимости составить запрос с дополнительными предложениями Where() и в конце вернуть соответствующие элементы в виде списка, используя ToList().

var matchingCustomers = _CustomerList;

if (!string.IsNullOrEmpty(lname))
{
    matchingCustomers = matchingCustomers.Where(x => x.LastName == lname);
}

if (!string.IsNullOrEmpty(fname))
{
    matchingCustomers = matchingCustomers.Where(x => x.FirstName == fname);
}

//...

return matchingCustomers.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...