public static class Spec
{
/// <summary>
/// True條件。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns>True條件</returns>
public static Expression<Func<T, bool>> True<T>() { return f => true; }
/// <summary>
/// False條件。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns>False條件</returns>
public static Expression<Func<T, bool>> False<T>() { return f => false; }
/// <summary>
/// 邏輯或。
/// </summary>
/// <param name="left">左邏輯。</param>
/// <param name="right">右邏輯。</param>
/// <returns>邏輯表達式。</returns>
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> left, Expression<Func<T, bool>> right)
{
var invokedExpr = Expression.Invoke(right, left.Parameters);
return Expression.Lambda<Func<T, bool>>(Expression.Or(left.Body, invokedExpr), left.Parameters);
}
/// <summary>
/// 邏輯與。
/// </summary>
/// <param name="left">左邏輯。</param>
/// <param name="right">右邏輯。</param>
/// <returns>邏輯表達式。</returns>
public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> left, Expression<Func<T, bool>> right)
{
var invokedExpr = Expression.Invoke(right, left.Parameters);
return Expression.Lambda<Func<T, bool>>(Expression.And(left.Body, invokedExpr), left.Parameters);
}
}
規約
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.