【问题标题】:Search page with MVC + Linq + EF使用 MVC + Linq + EF 的搜索页面
【发布时间】:2011-07-23 09:01:22
【问题描述】:

所以,我想实现一个在数据库中搜索记录的页面。操作的 url 应该类似于“~/Mail/List/{PropertyName}/{PropertyValue}.

属性名称和值是要过滤的对应实体属性名称,值是要匹配的属性值。问题是实体包含许多类型的属性。整数、字符串、日期……等。

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

谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc linq entity-framework


    【解决方案1】:

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

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

    因此,在您的示例中,您可以使用动态 LINQ 进行查询,例如 db.Mails.Where(PropertyName + " == @0", PropertyValue);

    【讨论】:

    • 哦。我的。上帝!哥们,谢谢!这是完美的答案。其实我在这个问题上纠结了很久,终于有人给了我一个直截了当的答案!
    猜你喜欢
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多