用谓词表达式作为参数获取api请求



是否可以使用谓词表达式作为HTTPGET请求(对mvc api控制器)的参数?

背景:我试图建立一个汽车租赁web应用程序。使用MSsql for db, EntityFramework(代码优先),(通用)CRUD函数和MVC API控制器的存储库。

我的目标是通过api控制器使用谓词linq表达式发送查询到db。代码:

存储库:

public IQueryable<T> Search<T>(Expression<Func<T, bool>> predicate) where T : class, IDataEntity
    {
        return _context.Set<T>().Where(predicate);
    }

api get(predicate表达式参数) function:

public HttpResponseMessage Get(Expression<Func<Car, bool>> predicate)
    {
        using (IRepository Manager = Factories.Factory.GetRepository())
        {
            var CarList = Manager.Search<Car>(predicate)
                .Select(x => new CarDTO()
                {
                    ...
                })
                .ToList();
            return Request.CreateResponse<List<CarDTO>>(HttpStatusCode.OK, CarList);
        }
    }

client HTML angular/jq ajax request:

$http.get("/api/CarApi"+"??????",{params:{ ??????? }})
            .success(function (result) {
                $scope.filteredCarsList = result;
                ...
            })
            .error(function (result) {
                ...
            });

(我使用agulars $http ajax请求,类似于$.getJSON)

是否有可能通过ajax (get)请求发送谓词表达式到期望获得linq表达式作为参数的api控制器?

如果有,怎么做?如果不是,什么是正确/适当的方式来实现我的目标?

我不确定这对你是否有用,但你可以使用动态Linq库。通过这种方式,您可以轻松地在运行时构造查询并使用字符串进行查询。

更多信息请点击这里

相关内容

  • 没有找到相关文章

最新更新