Поиск в ToList по нескольким полям

Есть поиск по полю NameShort:

IEnumerable<Counterparties> filteredData =
     AMABaseEntities.GetContext().Counterparties.ToList().Where(item =>
         item.NameShort.ToLower().Contains(searchText) 
     );

Как организовать поиск по нескольким полям, пропуская пустые значения? Если попадается пустое поле вылетает исключение:

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

WpfApp3.Counterparties.NameShort.get вернул null.

Ответы (1 шт):

Автор решения: Kseniya Sinickaya

Можно многое написать с использованием полноценного блока, так как where принимает функцию с булевым результатом:

 AMABaseEntities.GetContext().Counterparties.Where(item => {
     if (item.NameShort == null)
         return false;
     return item.NameShort.ToLower().Contains(searchText);
 });

Так лучше не делать, потому что результат может быть не определен в C# (сложные выражения в присвоении с условием постарайтесь не использовать):

 AMABaseEntities.GetContext().Counterparties.Where(item => item.NameShort == null?false:item.NameShort.ToLower().Contains(searchText));

Where - выдает IEnumerable<тип>, поэтому, если вам нужен лист, пишите ToList() в конце, и принимает IEnumerable<тип> после точки, нет смысла переводить в лист перед Where.

→ Ссылка