0

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

看下面(代码太多)!!

名称值集合:

  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)
4

2 回答 2

0

这是管道和过滤器架构模式的经典案例。您可以根据动态(运行时)条件构建过滤器列表。或者保留一个静态的过滤器列表,那些没有标准的过滤器,数据只是通过。将此过滤器列表应用于数据集或查询。

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

于 2015-11-11T18:48:46.907 回答
0

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

于 2015-11-13T14:35:36.493 回答