Как игнорировать пустые элементы в запросе linq - PullRequest
3 голосов
/ 23 марта 2010

Как игнорировать пустые элементы в запросе linq

У меня есть запрос linq

            var usersInDatabase =
            from user in licenseUserTable
            where user.FirstName == first_name &&
             user.LastName == last_name 
            select user;

Но если я получу здесь, а first_name или last_name не заполнены, то я все равно хочу оценить другой элемент данных.

Ответы [ 3 ]

4 голосов
/ 23 марта 2010
var usersInDatabase =
    from user in licenseUserTable
    where 
        (user.FirstName == first_name || first_name == string.Empty) &&
        (user.LastName == last_name || last_name == string.Empty)
    select user;

Теперь вы получите записи, которые соответствуют указанному первому имени, если first_name пусто, все будут совпадать, пока оно ТАКЖЕ совпадает с фамилией, если только last_name также не пусто. Единственная проблема с этим сейчас заключается в том, что если first_name и last_name не заполнены, вы получите все.

4 голосов
/ 23 марта 2010
    var usersInDatabase =
    from user in licenseUserTable
    select user;

    if (!string.IsNullOrEmpty(first_name)) { 
        usersInDatabase = usersInDatabase.Where(u => u.FirstName == first_name);
    }
    if (!string.IsNullOrEmpty(last_name)) { 
        usersInDatabase = usersInDatabase.Where(u => u.LastName == last_name);
    }
0 голосов
/ 23 марта 2010

Это подход в стиле одного оператора, но я считаю, что стиль Марка намного чище:

var usersInDatabase =
    from user in licenseUserTable
    where string.IsNullOrEmpty(first_name) || user.FirstName == first_name
    where string.IsNullOrEmpty(last_name) || user.LastName == last_name
    select user;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...