Как вы узнаете, что это еще не эффективно?Используйте какой-нибудь инструмент профилировщика, такой как SQL Server Profiler, если вы используете MSSQL, чтобы вы могли отслеживать ваш вызов по базе данных и видеть фактический SQL.Конечно, вы можете только отладить код, чтобы увидеть сгенерированный SQL, но это проще с помощью инструмента профилирования, и вы увидите, сколько времени занимает запрос.
РЕДАКТИРОВАТЬ: Я вижу одну частькак вы можете сделать его более эффективным:
public List<User> GetUsersStartingWithNonCharacter()
{
List<User> _dbUsers = this.GetAllUsers();
return _dbUsers.Where(p => ((p.FirstName != null && p.FirstName != string.Empty && !char.IsLetter(p.FirstName.ToLower()[0])) || (p.FirstName == null || p.FirstName == string.Empty))).ToList();
}
public IQueryable<Users> GetAllUsers()
{
return from u in _context.pu_Users
where !u.Is_Deleted
select new User
{
UserId = u.User_Id,
Email = u.Email_Address,
FirstName = u.First_Name,
LastName = u.Last_Name
};
}
Изменение значения GetAllUsers
на IQueryable приведет к задержке выполнения запроса до тех пор, пока вы не примените свои фильтры.Это может повлиять на некоторые другие аспекты вашего проекта, но вы должны учитывать это, так как это изменение может привести к выполнению предложения where в базе данных, а не в коде, что приведет к уменьшению трафика данных между вашим приложением и базой данных.Опять же, используйте профилировщик, чтобы увидеть разницу:).