#c# #entity-framework #asp.net-core #linq-to-sql
Вопрос:
var Data = (from Client in _context.Client.Include(c => c.ClientType)
select Client);
Data = Data.Where(m => ... || (m.MobilePhone != null amp;amp; String.Concat(m.MobilePhone.Where(c => !Char.IsWhiteSpace(c))) == search)).ToList();
Это работает, если значение mobilephone
не равно нулю, но выдает ошибку с исключением нулевой ссылки, если phonenumber
значение равно нулю.
Я добавил m.MobilePhone != null
условие, но, похоже, обычный AND
порядок здесь не применяется, поэтому это не останавливает ошибку.
Я знаю, что мог бы преобразовать в список, а затем отфильтровать его, но для этого количество результатов слишком велико.
Есть какие-либо предложения о том, как исправить ошибку или другой подход?
Комментарии:
1. Используйте м. мобильный телефон. Обрезка() игнорирует пробелы при поиске.
2. Я хочу игнорировать все пробелы, даже те, которые находятся в середине строки. Поиск по 123456789 должен вернуть результаты, если у вас есть номер телефона 123 456 789 и т. Д.
Ответ №1:
Используйте !строку.IsNullOrEmpty для отфильтровывания пустого и пустого пространства
var Data = (from Client in _context.Client.Include(c => c.ClientType)
select Client);
Data = Data.Where(m => !string.IsNullOrEmpty(m.MobilePhone) amp;amp; m.MobilePhone == search).ToList();
Ответ №2:
Это для того, чтобы удалить все пробелы в строке, как это?
Вы также можете использовать регулярные выражения для удаления всех пробелов в строке.
string str = "123 456 789";
str = Regex.Replace(str, @"s", "");
Ответ №3:
Мой приведенный выше код верен. Он работает после обновления с EntityFrameworkCore.Sqlserver 2.1.3 до 2.1.14