以谓词表达式为参数获取对api的请求

Ran*_*Ran 5 javascript linq api asp.net-mvc entity-framework

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

背景:我正在尝试构建一个汽车租赁 Web 应用程序。将 MSsql 用于数据库、EntityFramework(代码优先)、(通用)CRUD 函数和 MVC API 控制器的存储库。

我的目标是使用谓词 linq 表达式通过 api 控制器向数据库发送查询。编码:

存储库:

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

api get(谓词表达式参数)函数:

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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

客户端 html angular/jq ajax 请求:

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

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

是否可以通过 ajax (get) 请求将谓词表达式发送给希望获取 linq 表达式作为参数的 api 控制器?

如果是这样,如何?如果没有,实现我的目标的正确/适当方法是什么?

Luu*_*ret 1

我不确定这对您是否有用,但您可以使用Dynamic Linq Library。这样您就可以轻松地在运行时构建查询并使用字符串进行查询。

更多信息请参见此处