Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq表达式和;“不包含”;查询_C#_.net_Linq_Lambda - Fatal编程技术网

C# Linq表达式和;“不包含”;查询

C# Linq表达式和;“不包含”;查询,c#,.net,linq,lambda,C#,.net,Linq,Lambda,如果我有像这样的linq: !新列表{1,2,3}.包含(x.someColumn) 我想把它转换成表达式,比如: var mInfo = typeof (List<int>).GetMethod("Contains", new Type[] {typeof (int)}); var lst = new List<int>(); foreach (var a in f.Value.Split(',')) { var b = int.Parse(a); l

如果我有像这样的linq:
!新列表{1,2,3}.包含(x.someColumn)

我想把它转换成表达式,比如:

var mInfo = typeof (List<int>).GetMethod("Contains", new Type[] {typeof (int)});
var lst = new List<int>();

foreach (var a in f.Value.Split(','))
{
    var b = int.Parse(a);
    lst.Add(b);
}

var lConst = Expression.Constant(iList);

var b = Expression.Call(lConst,mInfo, propertyReference);

return Expression.Lambda<Func<TmpResult, bool>>(b, param);
var mInfo=typeof(List).GetMethod(“Contains”,新类型[]{typeof(int)});
var lst=新列表();
foreach(f.Value.Split(',')中的变量a)
{
var b=int.Parse(a);
第1条增补(b);
}
var lConst=表达式常数(iList);
var b=Expression.Call(lConst、mInfo、propertyReference);
返回表达式.Lambda(b,param);
这将类似于
包含
,但如何将其更改为类似于
!包含

如果我尝试用
表达式包装它。而不是
我得到了错误:

未为类型系统定义一元运算符Not。Func

您可以在lambda表达式的主体上使用该方法:

return Expression.Lambda<Func<TmpResult, bool>>(Expression.Not(b), param);
//                                              ^ negate body
返回表达式Lambda(表达式Not(b),参数);
//^否定正文
由于lambda表达式是一个函数,不能否定lambda表达式本身,只能否定lambda表达式的结果

表达式中包装主体
b