gpt4 book ai didi

c# - 具有多个参数的 Func 表达式

转载 作者:行者123 更新时间:2023-12-03 19:58:18 29 4
gpt4 key购买 nike

我正在尝试编写一个表达式,该表达式调用一个接受多个参数作为输入的方法,并且该表达式充当 nhibernate queryover 引擎的 where 子句。目前我收到一条错误消息:

System.Exception : Unrecognised method call: System.Func`3[[MyClass,
Assembly, Version=9.123.434, Culture=neutral,
PublicKeyToken=null],[System.Int32, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=wjerkwr234],[System.Boolean, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=234234123]]:Boolean
Invoke(MyClass, Int32)

 Expression<Func<MyClass, int, bool>> restricton=
(myClassObject, myNumber) => myClassObject.Property1== myNumber;

session
.QueryOver<MyClass>()
.Where(x =>x.Property2==1)
.And(x=>restriction.Compile().Invoke(x, 2))

我为什么要用表情?好吧,这是生成 queryover 语句的函数的参数,那里的条件可以改变

知道上面的代码有什么问题吗?

最佳答案

linq 提供程序需要一个表达式,但您给它一个委托(delegate),因为您使用了 Compile()

int myNumber = 5;
Expression<Func<MyClass, bool>> restricton=
myClassObject => myClassObject.Property1 == myNumber

session.QueryOver().Where(x => x.Property2 == 1).And(restriction)

更新:如果只有在构造查询时才知道

session.QueryOver().Where(x => x.Property2 == 1).And(CreateRestriction(2))

Expression<Func<MyClass, bool>> CreateRestriction(int myNumber)
{
return myClassObject => myClassObject.Property1 == myNumber;
}

关于c# - 具有多个参数的 Func 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9581484/

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