c#为linq查询提取具有lambda参数的方法

c#为linq查询提取具有lambda参数的方法,c#,linq,nhibernate,lambda,C#,Linq,Nhibernate,Lambda,我在hibernate中有很多这种类型的条件查询参数。这需要某种封装,但我对linq查询不太熟悉,不确定这是否可行。这类交换: if (!string.IsNullOrEmpty(params.test)) { vq = vq.WhereRestrictionOn(c => c.test).IsIn(params.test.StartsWith(";") ? params.test.Substring(1).Split(';') : params.test.Split(';'));

我在hibernate中有很多这种类型的条件查询参数。这需要某种封装,但我对linq查询不太熟悉,不确定这是否可行。这类交换:

if (!string.IsNullOrEmpty(params.test))
{
    vq = vq.WhereRestrictionOn(c => c.test).IsIn(params.test.StartsWith(";") ? params.test.Substring(1).Split(';') : params.test.Split(';'));
}
为此:

vq = newShinyFunction(vq, params.test, (c => c.test));

任何类似(c=>c.test)的lambda表达式都将自然地强制转换为与其类型匹配的委托或表达式。在这种情况下,
Func
Expression
,或
Func

检查api参考中的WhereRestrictionOn,看看它采用什么类型。将其用作新Shining函数的最终参数类型。

谢谢,
表达式是一个难题。现在干净多了。