我有兩個表達式:C#如何將兩個表達式合併爲一個新表達式?
public static Expression<Func<int, bool>> IsDivisibleByFive() {
return (x) => x % 5 == 0;
}
和
public static Expression<Func<int, bool>> StartsWithOne() {
return (x) => x.ToString().StartsWith("1");
}
我想創建一個同時適用於這兩個新的表達式(同樣的表達式用遍了我在不同的組合代碼):
public static Expression<Func<int, bool>> IsValidExpression() {
return (x) => IsDivisibleByFive(x) && StartsWithOne(x);
}
然後做:
public static class IntegerExtensions
{
public static bool IsValid(this int self)
{
return IsValidExpression().Compile()(self);
}
}
而且在我的代碼:
if (32.IsValid()) {
//do something
}
我有我想要定義的一次,而不是重複碼所有的地方很多這樣的表情。
謝謝。
問題是什麼? – 2012-01-12 19:30:04
爲什麼你首先使用表達式而不僅僅是代表? – svick 2012-01-12 19:33:42
增加了更多細節,但基本上我的第三個代碼塊實際上並沒有工作,這是'理論上我希望我能做到的事情'。現在,我必須手動創建一個新方法來返回一個表達式,這是前兩個的組合,然後我必須在我的代碼庫中分別維護這兩個表達式。 – 2012-01-12 19:33:54