gpt4 book ai didi

c# - 仅使用 LambaExpression 和比较值创建 Expression> 谓词

转载 作者:行者123 更新时间:2023-11-30 21:54:13 25 4
gpt4 key购买 nike

我需要创建一个 Expression<Func<T, bool>> , 但我只有一个 LambaExpression要比较的属性和用于比较的值。

如果我对它进行硬编码,这就是谓词的样子,这是我需要实现但不知道如何实现的。

string comparisonValue = "something";

Expression<Func<Person, bool>> predicate = person => person.Name == comparisonValue;

我有以下内容:

LambdaExpression expression = PropertyExpression<Person>(t => t.Name);

有没有一种方法可以生成像上面这样的硬编码谓词,只需要一个属性 LambdaExpression 和要比较的值?

我试过使用 LambdaExpression.Equal() ,但无法使其正常工作。

最佳答案

您可以按如下方式实现。

Expression<Func<TSource, bool>> EqualToExpression<TSource, TValue>(
Expression<Func<TSource, TValue>> selectValue, TValue targetValue)
{
return Expression.Lambda<Func<TSource, bool>>(
Expression.Equal(
selectValue.Body,
Expression.Constant(targetValue)),
selectValue.Parameters);
}

按如下方式使用。

Expression<Func<Person, string>> selectName = p => p.Name;
Expression<Func<Person, bool>> compareName = EqualToExpression(selectName, "John");

关于c# - 仅使用 LambaExpression 和比较值创建 Expression<Func<T, bool>> 谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33223347/

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