Asp.net mvc 将参数传递到表达式过滤器。。。

Asp.net mvc 将参数传递到表达式过滤器。。。,asp.net-mvc,generics,lambda,Asp.net Mvc,Generics,Lambda,我正在将GenericRepository与此代码一起使用 public virtual IEnumerable<TEntity> Get( Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,

我正在将GenericRepository与此代码一起使用

        public virtual IEnumerable<TEntity> Get(
        Expression<Func<TEntity, bool>> filter = null,
        Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
        string includeProperties = "")
    {
        IQueryable<TEntity> query = dbSet;

        if (filter != null)
        {
            query = query.Where(filter);
        }

        query = includeProperties.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Aggregate(query, (current, includeProperty) => current.Include(includeProperty));

        return orderBy != null ? orderBy(query).ToList() : query.ToList();
    }
但是,这不起作用,因为参数User.Identity.Name不转换它。。。。 我该怎么做呢?

我回答我自己

      var name = User.Identity.Name;
      ParameterExpression param = Expression.Parameter(typeof (Usuario), "h");
      Expression boby = Expression.Equal(Expression.PropertyOrField(param, "Correo"),
            Expression.Constant(name, typeof(string)));
      Expression<Func<Usuario, bool>> filter = Expression.Lambda<Func<Usuario, bool>>(boby, param);

      var usuario = _utHojas.UsuariosRepository.Get(filter).FirstOrDefault();
      var name = User.Identity.Name;
      ParameterExpression param = Expression.Parameter(typeof (Usuario), "h");
      Expression boby = Expression.Equal(Expression.PropertyOrField(param, "Correo"),
            Expression.Constant(name, typeof(string)));
      Expression<Func<Usuario, bool>> filter = Expression.Lambda<Func<Usuario, bool>>(boby, param);

      var usuario = _utHojas.UsuariosRepository.Get(filter).FirstOrDefault();