Содержит запрос по нескольким столбцам - PullRequest
4 голосов
/ 22 апреля 2011

Как найти несколько столбцов, используя LINQ to SQL, когда любой из столбцов может быть пустым?

IEnumerable<User> users = from user in databaseUsers
        where
             user.ScreenName.Contains(search)
             || user.FirstName.Contains(search)
             || user.LastName.Contains(search)
        select user;

Я получаю это исключение:

Ссылка на объект не установлена ​​для экземпляра объекта.

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.

Ответы [ 3 ]

8 голосов
/ 22 апреля 2011

добавить ненулевое условие user.Property != null

  IEnumerable<User> users = from user in databaseUsers
    where
         (user.ScreenName != null && user.ScreenName.Contains(search))
         || (user.FirstName != null && user.FirstName.Contains(search))
         || ( user.LastName != null && user.LastName.Contains(search))
    select user;
2 голосов
/ 29 сентября 2012
IEnumerable<User> users = from user in databaseUsers
where
     (user.ScreenName + ' ' + user.FirstName + ' ' + user.LastName).Contains(search)
select user;
0 голосов
/ 22 апреля 2011

Либо ваш пользователь является нулевой записью, либо пользователи базы данных не инициализированы.

...