我有兩種類型的表達式樹:Expression<Func<string, bool>>
,我想要獲得一個表達式來執行兩個表達式的OR(將相同的字符串參數傳遞給兩個表達式) 任何想法?如何組合(或)兩個表達式樹
1
A
回答
1
您可以嘗試將它們組合在Expression.Lambda
表達式中,然後使用Expression.Or
來檢查它們中的一個是否爲真。
下面是一個例子:
Expression<Func<Car, bool>> theCarIsRed = c1 => c1.Color == "Red";
Expression<Func<Car, bool>> theCarIsCheap = c2 => c2.Price < 10.0;
Expression<Func<Car, bool>> theCarIsRedOrCheap = Expression.Lambda<Func<Car, bool>>(
Expression.Or(theCarIsRed.Body, theCarIsCheap.Body), theCarIsRed.Parameters.Single());
var query = carQuery.Where(theCarIsRedOrCheap);
也許你可以得到更多的信息here
+1
這不起作用,因爲'theCarIsCheap'主體中使用的參數不再存在於結果表達式中。您需要使用ExpressionVisitor的漫長方式。 –
+0
我正在研究它,但鏈接確實值得閱讀。 – Dave
3
您可以使用PredicateBuilder
from LINQKit做到這一點。例如:
Expression<Func<string, bool>> e1 = …;
Expression<Func<string, bool>> e2 = …;
Expression<Func<string, bool>> combined = e1.Or(e2).Expand();
相關問題
- 1. 如何組合兩個LINQ表達式?
- 2. 如何合併兩個表達式樹體?
- 3. 將這兩個表達式組合成單個LINQ表達式
- 4. 正則表達式 - 組合兩個類
- 5. 組合兩個Linq表達式
- 6. 使用LINQ組合兩個表達式?
- 7. ngClass組合兩個表達式類型
- 8. 兩個正則表達式的組合
- 9. 如何組合表達式
- 10. 使用組合兩個正則表達式條件或
- 11. 如何組合這兩個正則表達式?
- 12. 結合表達式樹
- 13. 組合兩個lambda表達式與內表達
- 14. LINQ表達式樹是否合適樹?
- 15. 解析器樹或表達式樹
- 16. C#如何將兩個表達式合併爲一個新表達式?
- 17. 詳盡搜索/生成表達式樹的每個組合
- 18. 如何從兩個表達式樹創建泛型lambda?
- 19. 組合表達式
- 20. 組合兩個表達在SSRS 2008
- 21. 如何正則表達式環視表達式組合
- 22. 正則表達式匹配一個或兩個組或兩者都
- 23. 如何組合這些xpath表達式?
- 24. 兩個表達式組合成一個管道
- 25. 組合兩個正則表達式爲一個
- 26. 結合升壓正則表達式兩個正則表達式
- 27. 如何組合兩個或多個公式
- 28. 如何將兩個sql表達式合併爲一個?
- 29. 如何將這兩個正則表達式合併爲一個?
- 30. 如何將兩個xpath表達式合併爲一個?
我不確定你在這裏問什麼,也許你可以解釋爲什麼你問? – Bostwick