【发布时间】:2021-10-21 17:43:17
【问题描述】:
在我的项目中,目前我已经使用下面的函数代码实现了多次搜索:
public static IQueryable<T> Filter<T>(this IQueryable<T> source, SearchCriteria searchCriteria)
{
var predicate = new DynamicFilterBuilder<T>();
foreach (var item in searchCriteria.filters)
{
if (!string.IsNullOrEmpty(item.key))
{
if (item.key == "CreatedOn")
predicate.And(item.key, DynamicExpressions.FilterOperator.GreaterThanOrEqual, DateTime.ParseExact(item.value.ToString() + " 00:00:00", "yyyy-MM-dd HH:mm:ss", null))
.And(item.key, DynamicExpressions.FilterOperator.LessThanOrEqual, DateTime.ParseExact(item.value.ToString() + " 23:59:59", "yyyy-MM-dd HH:mm:ss", null));
else
predicate.And(item.key,
DynamicExpressions.FilterOperator.Contains, item.value);
}
}
return source.Where(predicate.Build());
}
但它的工作方式只像区分大小写意味着我需要准确地传递名称 ex : "Data" 如果我传递了 "data" 它不会返回任何东西,所以有人可以帮助我吗?
【问题讨论】:
-
DynamicExpressions 和 DynamicFilterBuilder 来自哪个包?是否有“LIKE”过滤运算符?
-
@Christopher Hamkins 不,没有可用的“LIKE”过滤器 DynamicExpressions 是新功能。
-
@检查下面的链接以获取包装和详细信息github.com/zHaytam/DynamicExpressions
标签: c# asp.net-core .net-core