Предположим, сущность, Patient
существует в контексте, который был создан с использованием подхода, основанного на базе данных, поэтому я не могу изменить базу данных.
public class Patient
{
public string Id { get; set; }
public string Surname { get; set; }
public string Forename { get; set; }
}
Я бы хотел отфильтровать пациентов по имени, например, имя или фамилия или полное имя. В настоящее время у меня есть следующий запрос:
await query
.Where(p => p.Forename != null && p.Forename.ToLower().Contains(filter) ||
p.Surname != null && p.Surname.ToLower().Contains(filter))
.ToListAsync();
Это, очевидно, проверяет только столбцы имени / фамилии индивидуально. Если фильтр имеет полное имя, он не работает.
Я попытался выполнить интерполяцию строк в предложении where, чтобы применить фильтр содержимого для комбинации имени и фамилии, но он не поддерживается в ядре ef и выполняется локально. Поскольку в базе данных содержится более миллиона пациентов, выполнение запроса локально в приложении не является опцией и должно выполняться в базе данных (поиск занимает более минуты).
Есть ли способ решить эту проблему?