将参数传递给表达式<函数<TENTITY,布尔值>>过滤器...



我正在用这段代码使用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();
    }

我想在我的控制器中使用此功能...

        public ActionResult Hojas_Read([DataSourceRequest] DataSourceRequest request)
    {
        var usuario = _utHojas.UsuariosRepository.Get(u => u.Correo == User.Identity.Name).FirstOrDefault();
        ..... 
    }

但是,这不起作用,因为参数 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();

最新更新