c# - 如何构造并保存到数据库以供以后使用半任意 lambda 表达式?

标签 c# lambda

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

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

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

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

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

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

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

最佳答案

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

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

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

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

关于c# - 如何构造并保存到数据库以供以后使用半任意 lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10376947/

相关文章:

c# - Entity Framework - 如何使用 lambda 通过一个查询选择每个 IDNumber 的第一行

lambda - Lambda函数中的Pyspark UDF函数错误

haskell - 将函数应用于haskell中的每个参数

java - lambda 和流 : collect in a Map

c# - System.String ElementAt[String](System.Collections.Generic.IEnumerable`1[System.String], Int32)' 方法

c# - 处理匹配字符串的声音?

c# - MS BOT 更改根对话框

c# - TempData 未被清除

c# - 有什么方法可以让 .NET 代码在电子邮件到达时运行和处理它们?

java - 有没有办法减少多个类型参数?