我想用ignore case創建expression.Equal()。示例代碼:
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);
將最終表達式傳遞給接受表達式的方法。
我試圖為Tolower創建一個Methodinfo,在Expression.Equal()中傳遞它並且不起作用。
任何指導都會有所幫助。
你可以使用string.Equals(string, string, StringComparison)
,如:
var expbrandCode = Expression.Call(typeof(string), "Equals", null, me, constant, Expression.Constant(StringComparison.CurrentCultureIgnoreCase));
請注意,如果要將表達式與Entity Framework或類似的orms一起使用,那麼它就變得複雜......不確定它們是否支持轉換該string.Equals()
重載。