IQueryable vs IEnumerable

Достаточно частый вопрос, чтобы проверить как понимает человек работу с EntityFramework. Причем он же может быть задан и по-другому, а цель: человек должен понимать когда происходит запрос в бд. `var someOrders = dbContext .Orders //IQueryable .Where(x=>x.Name=="someName"); //IQueryable

var someFilteredOrders = someOrders .Where(x=>x.Price>100) //IQueryable .OrderBy(x=>x.Date); //IQueryable

var materializedOrders=someFilteredOrders.ToArrayAsync(); //Это уже IEnumerable, именно здесь происходит запрос

Т е пока мы накидываем запрос через лямба выражение - это IQueryable, по сути описание запроса. При вызове ToArray() или ToList() происходит запрос и объекты уже появляются в базе - IEnumerable

из интересного

foreach(var order in someFilteredOrders ){ //сделай что-нибудь }

Здесь происходит запрос при начале foreach. А когда он заканчивается вызывается Dispose. Момент с Dispose довольно интересный, и его любят слышать на собеседованиях =)`

repost

16

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь