如何构造并保存到DB以供以后使用半任意lambda表达式?

时间:2012-04-29 23:35:11

标签: c# lambda

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

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

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

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

所以问题是,我该如何1)从字符串数据构造一个lambda表达式(意思是我如何有效地向服务器POST一些我可以灵活地转换为表达式的数据)和2)如何保存该表达式以后在DB中使用?

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

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

1 个答案:

答案 0 :(得分:1)

不确定这是否会对您有所帮助,但以下是一些建议:

  1. 考虑使用Predicate Builder。 Here's有关该方法的更多信息。

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

  3. 发动机好运,听起来很有意思!