我正在尝试为FilterDescriptor构建一个表达式生成器,该表达式生成器是我从一个请求中获取的,以便在DB中执行,因为它仅在内存中执行。我有成千上万的行可以从数据库中检索(这就是为什么我要创建一个构建器以减少负载的原因)。
//classes
public class Product
{
public string Name {get;set;}
public TypeOfProduct {get;set;}
}
public class TypeOfProduct
{
public string Description {get;set;}
}
//action Read
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
if (request.Filters.Count > 0)
{
where = ApplyFilter(request.Filters[0]);
}
}
// apply the FilterDescriptor to a string
private static string ApplyFilter(IFilterDescriptor filter)
{
var filters = string.Empty;
if (filter is CompositeFilterDescriptor)
{
filters += "(";
var compositeFilterDescriptor = (CompositeFilterDescriptor)filter;
foreach (IFilterDescriptor childFilter in compositeFilterDescriptor.FilterDescriptors)
{
filters += ApplyFilter(childFilter);
filters …
Run Code Online (Sandbox Code Playgroud)