IList (IList<T>) okamžite vytvára trvalé dáta v pamäti, čo neimplementuje "odložené vykonávanie", a ak má načítaná entita pridružené entity, táto entita sa nenačíta (ani okamžite, ani lenivo).
IQeurable <T>nevytvára okamžite trvalé dáta v pamäti, ale načítava ich do pamäte len vtedy, ak sú prechádzané (napr. cez forreach), konvertované na zoznam a podobne, a môže dosiahnuť "odložené vykonanie", ak má aktuálne načítaná entita asociácie, táto priradená entita môže byť načítaná ďalším prístupom.
Pozrite sa na nasledujúci kód:
//IList的情况 IList používatelia = res. ToList(); Používatelia boli načítaní do pamäte, ale pridružená entita (UserInfos) pre každého používateľa nie je načítaný, takže ďalší riadok kódu neprejde hladko VAR SS = Používatelia. where(p => p.UserInfos.ID != 3); Chyba je tu hlásená, pretože entita UserInfos od P sa nedá načítať
Situácia IQuerable IQueryable Users = res. AsQueryable(); používatelia sa nenačítavajú okamžite a príslušnú entitu je možné získať "lenivým načítaním" Chápem VAR SS = Používatelia. where(p => p.UserInfos.ID != 3); Zodpovedajúci SS bol úspešne získaný tu |