Ich habe diesen Code verwendet, um einen Suchfilter zu erstellen.Lambda-Ausdruck zum Erstellen von UND-Filter
Ich brauche ist ein Array von Daten übergeben und filtern Sie diese Daten durch UND.
Expression<Func<serveis, bool>> CombineWithAnd<T>(Expression<Func<T, bool>> firstExpression, Expression<Func<T, bool>> secondExpression)
{
var parameter = Expression.Parameter(typeof(T), "z");
var resultBody = Expression.AndAlso(Expression.Invoke(firstExpression, parameter), Expression.Invoke(secondExpression, parameter));
return Expression.Lambda<Func<serveis, bool>>(resultBody, parameter);
}
Und dann:
Expression<Func<T, bool>> resultExpression = n => false;
foreach (var car in cars)
{
Expression<Func<T, bool>> expression = x => x.color_car.Any(z => z.car == car);
resultExpression = CombineWithAnd(resultExpression, expression);
}
query = query.Where(resultExpression.Compile());
Wenn ich diesen gleichen Code mit OR oder OrElse die Suche richtig funktioniert.
Aber ich muss auch die Suche von AND oder AndAlso durchführen und es gibt immer Null Ergebnisse zurück.
Und ich habe in der Datenbank eingecheckt und es gibt sowohl AND und OR Ergebnisse.
es ist richtig, danke für die Hilfe. – Geo