IList (IList<T>) nekavējoties izveido noturīgus datus atmiņā, kas neīsteno "atliktu izpildi", un, ja ielādētajai entītijai ir saistītas entītijas, saistītā entītija netiks ielādēta (ne uzreiz, ne slinks).
IQeurable <T>uzreiz nerada pastāvīgus datus atmiņā, bet ielādē datus atmiņā tikai tad, ja tie tiek šķērsoti (piemēram, caur forreach), pārvērsti sarakstā utt., un var sasniegt "atliktu izpildi", ja pašlaik ielādētajai vienībai ir asociācijas, šo saistīto entītiju var ielādēt ar nākamo piekļuvi.
Apskatiet šādu koda daļu:
//IList的情况 IList lietotāji = res. ToList(); Lietotāji ir ielādēti atmiņā, bet saistītā entītija (UserInfos) katram lietotājam nav ir ielādēts, tāpēc nākamā koda rinda nenotiek vienmērīgi var ss = lietotāji. kur(p = > p.UserInfos.ID != 3); Šeit tiek ziņots par kļūdu, jo P entītiju UserInfos nevar ielādēt
IQuerable situācija IQueryable lietotāji = res. AsQueryable(); Lietotāji netiek ielādēti uzreiz, un saistīto entītiju var iegūt, izmantojot "Lazy Loading" Sapratu var ss = lietotāji. kur(p = > p.UserInfos.ID != 3); Atbilstošais SS tika veiksmīgi iegūts šeit |