У меня есть метод, который ищет людей в моей базе данных. Я хотел бы реорганизовать его так, чтобы он использовал хэшеты для повышения производительности.Фильтрация HashSet в EF
Я сделал упрощенный пример ниже (который не будет компилироваться, а просто дать вам идею).
В моем примере можно использовать HashSet
?
using (var context = new MyEntities())
{
var persons = new HashSet<PERSON>(context.PERSON);
if(!string.IsNullOrEmpty(age))
{
persons = persons.Where(p => p.age == age);
}
if(!string.IsNullOrEmpty(name))
{
persons = persons.Where(p => p.name.StartsWith(name));
}
//some similar filtering...
return persons.ToList();
}
Предупреждение! У вас закончится нехватка памяти, если таблица лиц будет слишком большой, поскольку все люди будут загружены в память. Просто дайте БД выполнить фильтрацию для вас. Если запрос выполняется медленно, проверьте ваш запрос и используйте индексы. – LostInComputer
его можно использовать. вы столкнулись с какой-либо проблемой? – Rezoan
@Rezoan HashSets не имеет метода Where(), так что да, я столкнулся с проблемой. – Johan