использовать динамическое выражение> - PullRequest
0 голосов
/ 09 октября 2018

у меня есть этот код

  public class PropertyFilterSpecification : BaseSpecification<Property>
{
    public PropertyFilterSpecification(PropertySearchCriteria sc)

    : base(i => 
    (!sc.VendorId.HasValue || i.VendorId == sc.VendorId)
    &&
    (string.IsNullOrWhiteSpace(sc.Name) || i.Name.Contains(sc.Name))
    &&
    (string.IsNullOrWhiteSpace(sc.Name) || i.Name.Contains(sc.Name))
    )
    {
        AddInclude(b => b.Vendor);
        AddInclude($"{nameof(Order.OrderItems)}.{nameof(OrderItem.OrderedProperty)}");
    }
}

теперь мне нужно использовать динамическое выражение>

мне нужен мой код для добавления условия, если

        : base(i => 
        addif (!sc.VendorId.HasValue , i.VendorId == sc.VendorId)
   .
        .addif (string.IsNullOrWhiteSpace(sc.Name) || i.Name.Contains(sc.Name))
      .`enter code here`addif 
        (string.IsNullOrWhiteSpace(sc.Name) || i.Name.Contains(sc.Name))
        )

и, пожалуйста, какпостроить динамическую creitirea

1 Ответ

0 голосов
/ 09 октября 2018
  public static Expression<Func<T, bool>> AndIf<T>(this Expression<Func<T, bool>> expr1, bool condition,
                                                         Expression<Func<T, bool>> expr2)
    {
        var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());

        if (condition)
            return Expression.Lambda<Func<T, bool>>(Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
        else
            return expr1;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...