gpt4 book ai didi

c# - 在 Dynamic Linq 中合并

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:11 25 4
gpt4 key购买 nike

我正在使用 Dynamic Linq 查询我们的数据库,其中包含一个基于用户输入的过滤器创建的字符串。在一种情况下,我们需要对两个字段执行合并,以便将我们的过滤器应用于结果。

生成的语法看起来像这样:

(nullableField ?? requiredField) == "foo"

或者,如果使用扩展方法:

(nullableField ?? requiredField).Contains("foo")

Dynamic Linq,或者至少我们项目中当前的版本不支持合并,是否有任何可用的实现或关于如何实现我自己的建议?我对表达的经验很少,而且我正在努力创建自己的表达。到目前为止,以下代码适用于我的有限测试,但我不确定我是否正确完成了。

这是由 ParseExpression() 调用的:

    // ?? operator
Expression ParseCoalesce()
{
Expression left = ParseLogicalOr();
if (token.id == TokenId.DoubleQuestion)
{
NextToken();
Expression expr1 = ParseExpression();
left = Expression.Coalesce(left, expr1);
}
return left;
}

关于这段代码的想法?有更好的方法吗?

最佳答案

如果您的系统支持ConditionalExpression,您可以像这样实现它

(nullableField != null ? nullableField == "foo" : requiredField == "foo")

(nullableField != null ? nullableField : requiredField) == "foo"

关于c# - 在 Dynamic Linq 中合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9501965/

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