Linq: Как найти строки поиска в двух столбцах с одинаковыми критериями - PullRequest
0 голосов
/ 22 декабря 2009

В моем контроллере этот метод действия называется " SearchForContact ", который принимает 2 строковых параметра firstName и LastName . Есть 3 ситуации:

  • Если оба параметра равны нулю, представление снова отображается с сообщением об ошибке, предлагающим пользователю ввести хотя бы один из 2 параметров

  • если оба параметра не равны NULL, я могу получить контакты и отобразить результат на виде

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

вот оператор, который обрабатывает поиск:

var contacts = contactRepository.SearchForContacts(firstName, lastName).ToList();

Вот мои вспомогательные методы, расположенные в моем классе репозитория (ContactRepository.cs), расположенном в папке моделей.

public IQueryable<Contact> SearchForContacts(string firstName, string lastName)
    {
        if (firstName == null)
            return OneCriteria(lastName);
        if (nom == null)
            return OneCriteria(firstName);
        else
            return TwoCriteria(firstName, lastName);

    }
    private IQueryable<Contact> OneCriteria(string criteria)
    {
        var contacts = from contact in db.Contacts
                       where ((contact. firstName == criteria) ||
                              (contact. lastName == criteria))
                       orderby contact. firstName
                       select contact;
        return contacts;
    }
    private IQueryable<Contact> TwoCriteria(string firstName, string lastName)
    {
        var contacts = from contact in db.Contacts
                       where ((contact. firstName == firstName) &&
                             (contact. lastName == lastName))
                       orderby contact. firstName
                       select contact;
        return contacts;
    }

Спасибо за помощь

Ответы [ 3 ]

2 голосов
/ 22 декабря 2009

Если вы не измените

if (nom == null)

до

if (lastName== null)

Кажется, работает нормально, когда я тестировал его.

0 голосов
/ 22 декабря 2009

Вы можете попробовать следующее: if (firstName == null && lastname == null) {сделай свою ошибку}

еще {

var contacts = из контакта в дБ. Контакты выберите контакт;

if (firstName! = Null) contacts = из FN в контактах, где (FN.firstName == firstName) выберите FN;

если (lastName! = Null) контакты = из LN в контактах, где (FN.lastName == lastName) выберите LN;

}

0 голосов
/ 22 декабря 2009

попробуйте

 if ((firstName == null) && (lastName != null)  )
        return OneCriteria(lastName);

if ((firstName! = Null) && (lastName == null)) вернуть OneCriteria (firstName);

еще return TwoCriteria (firstName, lastName);

надеюсь, это поможет.

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