C# में IEnumerable<T> और IQueryable<T> के बीच क्या अंतर है और कब क्या उपयोग करें?
नमस्ते सहकर्मियों! मैं C# में नया हूँ और Entity Framework के साथ काम कर रहा हूँ। मुझे लगातार भ्रम होता है कि कब IEnumerable लौटाना चाहिए और कब IQueryable।
मेरे पास रिपॉजिटरी में एक method है:
```csharp
public IEnumerable GetProductsByCategory(int categoryId)
{
return _context.Products.Where(p => p.CategoryId == categoryId).ToList();
}
```
लेकिन एक अन्य developer ने कहा कि IQueryable का उपयोग करना बेहतर है। मैंने फिर से लिखा:
```csharp
public IQueryable GetProductsByCategory(int categoryId)
{
return _context.Products.Where(p => p.CategoryId == categoryId);
}
```
अब मेरे पास एक service है जो इस method को call करती है और फिर filter करती है:
```csharp
var cheapProducts = repo.GetProductsByCategory(1).Where(p => p.Price < 100).ToList();
```
पहले case में (IEnumerable के साथ) सब कुछ काम करता है, लेकिन धीमा है। दूसरे में (IQueryable के साथ) — तेज़ है, लेकिन मुझे समझ नहीं आता क्यों।
कृपया समझाएँ, मूलभूत अंतर क्या है? मुझे कब IEnumerable का उपयोग करना चाहिए और कब IQueryable का? और उसमें क्या है?