如何使用名称值集合创建动态 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/
我已将列搜索过滤器值发送到我的网站 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/