Lui*_*lar 5 linq asp.net asp.net-mvc entity-framework
所以,我想实现一个在数据库中搜索记录的页面.该动作的URL应该类似于"〜/ Mail/List/{PropertyName}/{PropertyValue}.
属性名称和值是要过滤的相应实体属性名称,值是要匹配的属性值.问题是该实体包含许多类型的属性.Int,string,date ..等
问题是,如何实现动态搜索页面或类似的东西来过滤我的查询?
谢谢!
所有 LINQ 运算符都希望传入 lambda。因此,当您想要进行类似过滤时Where(x => x.[PropertyName] == [PropertyValue]),您需要能够构造相应的 lambda 表达式。通常,当编译时知道值时,就没有问题,您只需构造 lambda 即可。
当您在编译时不知道这些值时,您必须手动构造表达式树(这本质上就是 lambda 表达式的组成部分)。这可能有点复杂,但有一些库可以帮助您,例如Dynamic LINQ(这是另一个关于 EF 的很好的教程)。然后,您可以将Where条件指定为字符串,库在运行时会将其转换为表达式树,如果错误则抛出异常。
因此,在您的示例中,使用 Dynamic LINQ,您可以像这样执行查询db.Mails.Where(PropertyName + " == @0", PropertyValue);
| 归档时间: |
|
| 查看次数: |
855 次 |
| 最近记录: |