gpt4 book ai didi

c# - 处理 null 的 Linq 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:43 26 4
gpt4 key购买 nike

我正在尝试在 linq 表达式中使用以下代码,我在 this question但是,如果数据库字段为空,它将失败。

  public static IQueryable<T> FieldsAreEqualOrBothNullOrEmpty<T>(
this IQueryable<T> source,
Expression<Func<T, string>> member,
string value)
{
Expression body;
if (string.IsNullOrEmpty(value))
{
body = Expression.Call(typeof(string), "IsNullOrEmpty", null, member.Body);
}
else
{
body = Expression.Equal(
Expression.Call(member.Body, "ToLower", null),
Expression.Constant(value.ToLower(), typeof(string)));
}
return source.Where(Expression.Lambda<Func<T, bool>>(body, member.Parameters));
}

在我看来好像是代码

 Expression.Call(member.Body, "ToLower", null)

是问题所在,但我不知道在该位置使用什么。

最佳答案

Expression.Call(member.Body, "ToLower", null)

应替换为

Expression.IfThenElse(
Expression.Equals(member.Body, Expression.Constant(null)),
Expression.Constant(null),
Expression.Call(member.Body, "ToLower", null))

转化为

body == null ? null : body.ToLower();

关于c# - 处理 null 的 Linq 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33315584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com