使用MVC + Linq + EF搜索页面

Lui*_*lar 5 linq asp.net asp.net-mvc entity-framework

所以,我想实现一个在数据库中搜索记录的页面.该动作的URL应该类似于"〜/ Mail/List/{PropertyName}/{PropertyValue}.

属性名称和值是要过滤的相应实体属性名称,值是要匹配的属性值.问题是该实体包含许多类型的属性.Int,string,date ..等

问题是,如何实现动态搜索页面或类似的东西来过滤我的查询?

谢谢!

NOt*_*Dev 3

所有 LINQ 运算符都希望传入 lambda。因此,当您想要进行类似过滤时Where(x => x.[PropertyName] == [PropertyValue]),您需要能够构造相应的 lambda 表达式。通常,当编译时知道值时,就没有问题,您只需构造 lambda 即可。

当您在编译时不知道这些值时,您必须手动构造表达式树(这本质上就是 lambda 表达式的组成部分)。这可能有点复杂,但有一些库可以帮助您,例如Dynamic LINQ是另一个关于 EF 的很好的教程)。然后,您可以将Where条件指定为字符串,库在运行时会将其转换为表达式树,如果错误则抛出异常。

因此,在您的示例中,使用 Dynamic LINQ,您可以像这样执行查询db.Mails.Where(PropertyName + " == @0", PropertyValue);