如何使用名称值集合创建动态 where 子句?

How to create a dynamic where clause using a name value collection?

我已将列搜索过滤器值发送到我的网站 api,但我不知道如何使 where 子句动态化?

Look below (too much code)!!

名称值集合:

  public DataTablePager<AccountDTO> Get([FromUri] DataTableParameter param)
        {
            NameValueCollection nvc = HttpUtility.ParseQueryString(Request.RequestUri.Query);

转换搜索值:

if (!String.IsNullOrEmpty(nvc["sSearch_0"]) && !int.TryParse(nvc["sSearch_0"], out tmpInt) ||
                !String.IsNullOrEmpty(nvc["sSearch_1"]) && !int.TryParse(nvc["sSearch_1"], out tmpInt) ||
                !String.IsNullOrEmpty(nvc["sSearch_10"]) && !int.TryParse(nvc["sSearch_10"], out tmpInt)

设置 Where 子句:

filteredresults = filteredresults.Where(i => CorrectNumericTypes
                                                      && (Lead_ID == null || i.Lead_ID == Lead_ID)
                                                      && (Account_ID == null || i.Account_ID == Account_ID)

这是Pipes and Filters Architectural pattern的经典案例。 您可以根据动态(运行时)条件构建过滤器列表。或者保留一个静态过滤器列表,其中没有标准,数据直接通过。将此过滤器列表应用于数据集或查询。

我认为您无法使用 LINQ 实现这一目标。您可以设计一个查询构建器(使用相同的过滤器模式)

这是我需要的(谓词):http://www.c-sharpcorner.com/UploadFile/c42694/dynamic-query-in-linq-using-predicate-builder/