Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 linq orderby take (top)  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49175
начинаю изучать, так что не бейте

такой запрос как работает с БД MSSQL и прочими БД?
                var list = db.TmpMnuUsers.Select(p => new
                {
                    UserId = p.UserId,
                    Fam = p.Fam,
                    Ima = p.Ima
                }).OrderByDescending(p => p.Fam).Take(50); 


Запрос преобразуется в TOP 50
что-то вроде
select top 50
      UserId,
      Fam,
      Ima
  from TmpMnuUsers
 order by Fam desc
 


или вся отсортированная коллекция тянется на клиента и там отбираются первые 50 записей?
5 май 18, 13:55    [21389422]     Ответить | Цитировать Сообщить модератору
 Re: linq orderby take (top)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19553
andreymx,

требуется угадать, что такое db?

Если EF - то на сервере
5 май 18, 13:58    [21389431]     Ответить | Цитировать Сообщить модератору
 Re: linq orderby take (top)  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49175
Shocker.Pro
andreymx,

требуется угадать, что такое db?

Если EF - то на сервере
EF
5 май 18, 13:59    [21389432]     Ответить | Цитировать Сообщить модератору
 Re: linq orderby take (top)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19553
Лучше, конечно Order и Take воткнуть ДО проекции, чтобы потом не попасть при рефакторинге
5 май 18, 13:59    [21389433]     Ответить | Цитировать Сообщить модератору
 Re: linq orderby take (top)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
andreymx,
Сервер даст 50 а не миллион.
а)
Проверьте на большой табле и убедитесь будет ли тормозить.
б) включите логирование галку и смотрите реальный запрос
5 май 18, 14:00    [21389435]     Ответить | Цитировать Сообщить модератору
 Re: linq orderby take (top)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
Shocker.Pro
Лучше, конечно Order и Take воткнуть ДО проекции, чтобы потом не попасть при рефакторинге

+1
и проверить, действительно ли нужна проекция
5 май 18, 14:02    [21389437]     Ответить | Цитировать Сообщить модератору
 Re: linq orderby take (top)  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49175
спасибо всем, буду пробовать
5 май 18, 14:08    [21389457]     Ответить | Цитировать Сообщить модератору
 Re: linq orderby take (top)  [new]
hVostt
Member

Откуда:
Сообщений: 14981
andreymx
Запрос преобразуется в TOP 50
что-то вроде
select top 50
      UserId,
      Fam,
      Ima
  from TmpMnuUsers
 order by Fam desc
 



или вся отсортированная коллекция тянется на клиента и там отбираются первые 50 записей?


А что, по SQL запросу не видно? )))
5 май 18, 20:13    [21389898]     Ответить | Цитировать Сообщить модератору
 Re: linq orderby take (top)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 35741
hVostt
А что, по SQL запросу не видно? )))
да его не понять. Вроде вопросительный в конце. Т.е. он думает что запрос такой будет).
5 май 18, 20:36    [21389918]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить