Warum Expression<Func<T>> anstelle von Func<T> in C# verwenden? Unterschied anhand von Beispielen
Hallo Kollegen. Ich habe angefangen, C# zu lernen und bin auf so etwas wie Expression> gestoßen. Scheinbar sehen sowohl Func als auch Expression> gleich aus, wenn ich Lambdas schreibe. Aber wozu braucht man dann dieses "Expression"?
Hier ein einfaches Beispiel. Ich habe eine Methode, die Func akzeptiert:
```csharp
public void Filter(Func predicate) {
var numbers = new List {1, 2, 3, 4, 5};
var result = numbers.Where(predicate).ToList();
// mache etwas mit result
}
```
Ich rufe sie so auf: `Filter(x => x > 3);` — alles funktioniert.
Aber ich habe gesehen, dass in Entity Framework oft Expression> verwendet wird. Zum Beispiel:
```csharp
public IQueryable GetData(Expression> predicate) {
return dbSet.Where(predicate);
}
```
Was ist der grundlegende Unterschied?