2

我正在创建一个报告引擎。我试图使其更通用的挑战之一是试图弄清楚如何为用户的查询提供更大的灵活性,这意味着生成自己的查询以供以后使用,而不是使用我提供的固定集合。

例如,假设我有一个 Document 对象,它有 N Section 对象,其中有 N Line 对象。

在具有更多静态目标的代码中,我可以使用文档列表上的 where 子句和 lambda 表达式轻松获取 Documents 列表,其中有一个具有 Line 的 Section 的值包含一些文本。

然而,有很多(几乎是无限的)可能的表达方式,因此将人们限制在一个子集或必须将每个可能的路径编码为参数化方法并不是真正可行的。

所以问题是,我该如何 1)从字符串数据构造一个 lambda 表达式(这意味着我如何有效地将一些数据发布到服务器,我可以灵活地转换为表达式)和 2)我如何保存该表达式以供以后使用在数据库中?

可能只有 #1 是真正相关的,因为如果我可以在 POST 数据时构造表达式,我可以将该字符串信息存储到数据库并执行相同的过程,但我目前不知道如何完成 #1

有什么建议么?我觉得这在理论上是可行的,但我显然错过了基本方法。

4

1 回答 1

1

不确定这是否对您有帮助,但这里有一些建议:

  1. 考虑使用谓词生成器。这是有关该方法的更多信息。

  2. 您也许可以使用动态 linq,并且可以将查询保存在数据库中以供以后使用,就像常规字符串一样。我对这种方法没有经验,但如果你有兴趣,可以在这里阅读。

祝你引擎好运,听起来很有趣!

于 2012-04-29T23:44:45.823 回答