Arbre d'expression C # avec Ignore Case ou tolower

.net asp.net c# expression-trees

Question

Je veux créer expression.Equal () avec ignore case. Exemple de code:

if (!string.IsNullOrEmpty(request.BrandCode))
{
    MemberExpression me = Expression.Property(parmExpression, "BrandCode");
    ConstantExpression constant = Expression.Constant(request.BrandCode, typeof(string));
    expbrandCode = Expression.Equal(me, constant);
}
if (!string.IsNullOrEmpty(request.CountryCode))
{
    MemberExpression me = Expression.Property(parmExpression, "CountryCode");
    ConstantExpression constant = Expression.Constant(request.CountryCode, typeof(string));
    expCountryCode = Expression.Equal(me, constant);
}

var finalexpression = Expression.AndAlso(expbrandCode, expCountryCode);

Passez l'expression finale à une méthode qui accepte l'expression.

J'ai essayé de créer un Methodinfo pour Tolower, je l'ai passé dans Expression.Equal () et cela n'a pas fonctionné.

Toute indication serait utile.

Réponse populaire

Vous pouvez utiliser string.Equals(string, string, StringComparison) , comme:

var expbrandCode = Expression.Call(typeof(string), "Equals", null, me, constant, Expression.Constant(StringComparison.CurrentCultureIgnoreCase));

Notez que si vous souhaitez utiliser l'expression avec Entity Framework ou des orms similaires, elle devient complexe ... Vous ne savez pas s'ils prennent en charge la traduction de cette surcharge string.Equals() .




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi