Допустим, у меня есть следующие сущности
Пользователь
- Идентификатор_пользователь
- UserName
- UserNameAsLower
- Профиль (свойство навигации)
Профиль
- Идентификатор_пользователь
- E-mail
- EmailAsLower
- Язык
и я хочу вернуть консолидированный объект, давайте назовем его UserDTO, но удалим некоторые поля, которые мы не хотим, чтобы пользователь видел (AsLower stuff)
- UserDTO
- Идентификатор_пользователь
- UserName
- E-mail
- Язык
если я напишу запрос LINQ следующим образом, а затем применю к нему критерии фильтрации, будет ли он выполняться в этот момент, так как критерии фильтра применяются к именам свойств прогнозируемого класса?
public IQueryable<UserDTO> GetUsers()
{
IQueryable<UserDTO> users = (from u in Entities.Users select new UserDTO() { UserID = u.UserID, UserName = u.UserName, Email = u.Profile.Email, Language = u.Profile.Email });
users = users.Where( u => u.UserName.Contains("Admin") );
return users;
}
Причина, по которой я спрашиваю, состоит в том, что если таблица базы данных за ней оказывается действительно большой (миллионы записей), я хочу убедиться, что она не пытается сначала загрузить ее в память.