Junior — Middle
85
Деректермен жұмыс істеу контекстінде IQueryable және IEnumerable интерфейстерінің айырмашылықтарын түсіндіріңіз.
Сұралған компаниялар
AI-дан жауап
sobes.tech AI
IEnumerable және IQueryable — C# тілінде коллекциялар мен сұраулармен жұмыс істеуге арналған интерфейстер, бірақ олардың мақсаттары мен мінез-құлқы әртүрлі:
-
IEnumerable<T> — қайталанатын коллекцияны білдіреді. Мәліметтерге сұраулар жадта орындалады (in-memory). Жергілікті коллекциялармен жұмыс істеу үшін қолайлы, мысалы, тізімдер немесе массивтер.
-
IQueryable<T> —
IEnumerable<T>кеңейтеді және SQL сұраулары сияқты өрнектерге айналуы мүмкін сұрауларды құруға мүмкіндік береді. Сұраулар дерекқор сияқты дереккөздерде орындалады, бұл таңдау процесін оңтайландыруға және жіберілетін деректер көлемін азайтуға мүмкіндік береді.
Негізгі айырмашылықтар:
| Ерекшелік | IEnumerable<T> | IQueryable<T> |
|---|---|---|
| Орындау орны | Жадта (клиент жағы) | Серверде (дереккөз) |
| Мәлімет түрі | Кез келген коллекциялар | LINQ қолдайтын дереккөздер (мысалы, Entity Framework) |
| Кешіктірілген орындалуды қолдау | Иә | Иә |
| Қолданылуы | Элементтерді қайталау | Сұрауларды құру және орындау |
Мысал:
IEnumerable<Product> products = GetProducts(); // жергілікті коллекция
var cheapProducts = products.Where(p => p.Price < 100); // жадта сүзу
IQueryable<Product> queryableProducts = dbContext.Products; // дерекқорға сұрау
var cheapProductsFromDb = queryableProducts.Where(p => p.Price < 100); // SQL сұрауы дерекқорға