我正在使用linq表达式树来构建查询。
我的数组:
string[] { null, null }
我要实现的条件:
x == null ? null : x.ToLower()
我的linq表达式如下:
{Param_0 => value(System.String[]).Any(Param_1 => (Param_0.FirstName.ToLower() == IIF((Param_1 == null), null, Param_1.ToLower())))}
这是我的第一次尝试,我似乎找不到正确的方法
Constant = Expression.Condition(Expression.Equal(Constant, Expression.Constant(null, typeof(string))), Expression.Constant(null, typeof(string)), Expression.Call(Constant, "ToLower", null));
预期结果是能够对不为null的元素调用.ToLower()
答案 0 :(得分:0)
在我看来,您想要一个表示函数调用的表达式,并输入一个字符串,然后输出一个字符串。
Expression<Func<string, string>>
Lambda表达式如何?
Expression<Func<string, string>> myExpression = (x) => (x==null) ? null : x.ToLower();
此表达式可在Queryable Select语句中使用,如下所示:
IQueryable<string> myItems = new List<sring>()
{
"Abc",
null,
"DEF",
null,
"gHI",
}
.AsQueryable();
IQueryable<string> myLowerCaseItems = myItems.Select(myExpression);
foreach (string item in myLowerCaseItems)
{
if (item == null)
Console.WriteLine("<null>");
else
Console.WriteLine(item);
}
这将产生以下输出:
abc 定义 吉