ho bisogno di passare la query lambda come parametro, il codice seguenti è di esempio e sono interessanti per trovare un attrezzo per esso, v'è campioni: qualche cosa come questo:Esiste un modo per passare l'espressione lambda come variabile o argomento?
var expr1 = Where(n => n > 6).OrderBy(n => n % 2 == 0).Select(n => n);
var expr2 = TakeWhile((n, index) => n >= index));
e utilizzarlo come non :
public void UseLambda<T> (IEnumerable<T> source , lambda Expr){
var items= Expr.Compile(source);
foreach(var item in items)
Console.Writeline(item.ToString());
}
public void Main(){
List<int> numbers = new List<int> { 10, 24, 9, 87, 193, 12, 7, 2, -45, -2, 9 };
var expr1 = Where(n => n > 6).OrderBy(n => n % 2 == 0).Select(n => n);
UseLambda(numbers, expr1);
}
Qualcuno ha un'idea a riguardo?
C'è un errore nel definire espr1, espr2: 'System.Collections.IEnumerable' non contiene una definizione per 'dove' e nessun metodo estensione 'Dove' accettare un primo parametro di tipo System.Collections. IEnumerable 'potrebbe essere trovato (ti manca una direttiva using o un riferimento assembly?) – Saeid
bisogno di cambiare a: Func, ...... –
Saeid
Grazie per la modifica Saeid. – Samuel