簡體   English   中英

Linq表達式和“不包含”查詢

[英]Linq Expressions and “Not Contains” query

如果我有如下所示的linq: !new List<int>{1,2,3}.Contains(x.someColumn)

我想將其轉換為Expression,所以像這樣:

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);

這將像“ Contains一樣工作,但是如何將其更改為“ !Contains呢?

如果我嘗試用Expression.Not包裹它,沒有錯誤:

The unary operator Not is not defined for the type System.Func

您可以在lambda表達式主體上使用Expression.Not方法:

return Expression.Lambda<Func<TmpResult, bool>>(Expression.Not(b), param);
//                                              ^ negate body

由於lambda表達式是一個函數,因此您不能否定lambda表達式本身 ,而只能否定lambda表達式的結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM