Поиск в 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
.