Pourquoi utiliser Expression<Func<T>> au lieu de Func<T> en C# ? Différence avec exemples
Bonjour, collègues. J'ai commencé à étudier C# et je suis tombé sur un truc appelé Expression>. Apparemment, Func et Expression> se ressemblent quand j'écris des lambdas. Mais pourquoi alors ce "Expression" est-il nécessaire ?
Voici un exemple simple. J'ai une méthode qui prend Func :
```csharp
public void Filter(Func predicate) {
var numbers = new List {1, 2, 3, 4, 5};
var result = numbers.Where(predicate).ToList();
// je fais quelque chose avec result
}
```
Je l'appelle comme ça : `Filter(x => x > 3);` — tout fonctionne.
Mais j'ai vu que dans Entity Framework, on utilise souvent Expression>. Par exemple :
```csharp
public IQueryable GetData(Expression> predicate) {
return dbSet.Where(predicate);
}
```
Quelle est la différence fondamentale ? Pourquoi ne pas simplement utiliser Func partout ? Je comprends qu'Expression est lié aux arbres d'expression, mais je n'arrive pas à saisir à quoi cela sert en pratique. Quand dois-je choisir Expression, et quand