zoukankan      html  css  js  c++  java
  • 拉姆达表达式 追加 条件判断 Expression<Func<T, bool>>

    public static class PredicateBuilder
    {

    /// <summary>
    /// 机关函数应用True时:单个AND有效,多个AND有效;单个OR无效,多个OR无效;混应时写在AND后的OR有效
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <returns></returns>
    public static Expression<Func<T, bool>> True<T>() { return f => true; }

    /// <summary>
    /// 机关函数应用False时:单个AND无效,多个AND无效;单个OR有效,多个OR有效;混应时写在OR后面的AND有效
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <returns></returns>
    public static Expression<Func<T, bool>> False<T>() { return f => false; }

    public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
    Expression<Func<T, bool>> expr2)
    {
    var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
    return Expression.Lambda<Func<T, bool>>
    (Expression.Or(expr1.Body, invokedExpr), expr1.Parameters);
    }

    public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
    Expression<Func<T, bool>> expr2)
    {
    var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
    return Expression.Lambda<Func<T, bool>>
    (Expression.And(expr1.Body, invokedExpr), expr1.Parameters);
    }
    }

    ---------------------------------------------------------------------------------------

    var where = PredicateBuilder.True<SYS_Message>();
    where = where.And(p => p.isActive == true);

    if (receiveUserId!=null)
    {
    where = where.And(p => p.MessageReceiveUser == receiveUserId);
    }
    if (!string.IsNullOrEmpty(messageMain))
    {
    where = where.And(p =>messageMain.Contains( p.MessageMain) );
    }
    if ( !string.IsNullOrEmpty(receivrUserName))
    {
    where = where.And(p =>messageMain.Contains( p.MessageMain)&&aliexpressEntities.YH_User.Where(U=>U.isActive==true&& receivrUserName.Contains(U.first_name)).Select(U=>U.userId).ToList().Contains(Convert.ToInt32( p.MessageReceiveUser)) );

    }
    if (startTime!=null)
    {
    where = where.And(p =>p.createTime>=startTime );
    }
    if (endTime != null)
    {
    where = where.And(p => p.createTime <= endTime);
    }
    EntityList = aliexpressEntities.SYS_Message.Where(where.Compile()).OrderByDescending(p => p.createTime).Skip(((int)pageIndex - 1) * pageSize).Take(pageSize).ToList();
    protectCount = aliexpressEntities.SYS_Message.Where(where.Compile()).Count();
    protectPage = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(protectCount) / pageSize));

  • 相关阅读:
    线性判别分析(LDA)
    奇异值分解(SVD)
    傅里叶变换
    SVM 之非线性支持向量机
    三角函数常用公式
    协方差、样本协方差和协方差矩阵
    方差和样本方差
    SVM 之线性支持向量机
    参考资料汇总
    QObject: Cannot create children for a parent that is in a different thread
  • 原文地址:https://www.cnblogs.com/520cc/p/4094695.html
Copyright © 2011-2022 走看看