1

我希望在我的 ASP.NET/SQL Server 2005 应用程序中添加“高级搜索”功能。理想情况下,我希望它是表驱动的。例如,如果我的架构随着向要搜索的表中添加新列而发生变化,我希望 UI 将新列的添加反映为可搜索字段。我可以设想一些包含可搜索字段、它们的类型、相关查找等的控制表。

构建 UI 时可以参考这些表。我的问题在于创建动态 SQL 的最佳方法。一种方法是自己构造一个参数化的 SQL 语句。但我对 Linq 很感兴趣,不知何故,我认为 System.Linq.Dynamic 命名空间——以及Linq 表达式树——可能会提供更优雅/更强大的解决方案?

希望任何此类解决方案都适用于 Linq to Sql 或 Linq to Entities。我调查这条路径是否正确,或者这个问题空间是否真的不是表达式树的用例之一?

4

1 回答 1

1

您可以使用表达式树,通过构建一个树来比较架构中的所有字段,然后将该表达式传递给 Linq2Sql 以获取您想要的 sql。但是为什么要打扰呢?这是更多的编程工作,代码将更难理解,除了交换数据​​提供者的理论能力之外没有任何好处。

(嘿霍华德) - 确实 - 在这种情况下使用字符串将比使用表达式树简单得多。另一方面,如果您要为用户提供一种小型查询语言,那么表达式树就会派上用场。

于 2009-01-23T22:05:15.213 回答