Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 具有LINQ(EntityFramework)的动态过滤器_Asp.net_Sql Server_Entity Framework_Linq_Asp.net Core - Fatal编程技术网

Asp.net 具有LINQ(EntityFramework)的动态过滤器

Asp.net 具有LINQ(EntityFramework)的动态过滤器,asp.net,sql-server,entity-framework,linq,asp.net-core,Asp.net,Sql Server,Entity Framework,Linq,Asp.net Core,问题很简单。我们有一些商店有很多产品。 例如,每个项目都有字段和许多其他字段: 身高 重量 长 名称 颜色 价格 我们实现了一些页面,在这里我们可以根据价格、长度和字符串颜色等数字范围过滤项目 因此,问题在于: -我们需要允许人们根据颜色+价格、颜色+长度+重量以上的任何标准过滤物品 使用预定义的SELECT+WHERE的基本方法太难控制 还有其他选择吗 谢谢。通用解决方案 最常见的解决方案是执行大型if`案例。这需要一些时间来支持你所有的领域,但最终会非常有效 但是,如果您想动态地执行此操作,

问题很简单。我们有一些商店有很多产品。 例如,每个项目都有字段和许多其他字段:

身高 重量 长 名称 颜色 价格 我们实现了一些页面,在这里我们可以根据价格、长度和字符串颜色等数字范围过滤项目

因此,问题在于: -我们需要允许人们根据颜色+价格、颜色+长度+重量以上的任何标准过滤物品

使用预定义的SELECT+WHERE的基本方法太难控制

还有其他选择吗

谢谢。

通用解决方案 最常见的解决方案是执行大型if`案例。这需要一些时间来支持你所有的领域,但最终会非常有效

但是,如果您想动态地执行此操作,两个第三方库可以帮助您完成此操作

LINQ动态 所需的语法与C有点不同,但效果很好。这是做这种事最受欢迎的图书馆

求值表达式 免责声明:我是项目的所有者

该库不是免费的,但您可以使用与C相同的语法执行几乎任何动态LINQ

因此,您将能够构建一个字符串进行计算,而库将为您完成其余的工作

以下是使用EF Classic的一些示例:


乔纳森是对的。我认为使用if案例将是最简单的,并且看起来像这样

var res=_dbContextorSource.table.Wherex=>x.ID>0//有东西可以把他们都弄到手 //或者x=>x.ID>=0&&x.ID x.GetType。 GetPropertyfilter.MatchingName.GetValuex==filter.FilterValue; } var结果=res.ToList;
普拉斯,发一些代码。。。