Qual é a diferença entre IEnumerable<T> e IQueryable<T> em C# e quando usar cada um?
Olá, colegas! Sou novo em C# e estou trabalhando com Entity Framework. Fico constantemente confuso sobre quando retornar IEnumerable e quando retornar IQueryable.
Aqui está um método que tenho no repositório:
```csharp
public IEnumerable GetProductsByCategory(int categoryId)
{
return _context.Products.Where(p => p.CategoryId == categoryId).ToList();
}
```
Mas outro desenvolvedor disse que é melhor usar IQueryable. Eu reescrevi:
```csharp
public IQueryable GetProductsByCategory(int categoryId)
{
return _context.Products.Where(p => p.CategoryId == categoryId);
}
```
Agora tenho um service que chama esse método e depois filtra:
```csharp
var cheapProducts = repo.GetProductsByCategory(1).Where(p => p.Price < 100).ToList();
```
No primeiro caso (com IEnumerable) tudo funciona, mas é lento. No segundo (com IQueryable) é mais rápido, mas não entendo por quê.
Expliquem, por favor, qual é a diferença fundamental? Quando devo usar IEnumerable e quando IQueryable?
No answers yet.
Faça login para deixar uma resposta
Blogs