1

我想在数据库中存储一个布尔表达式,并对其进行评估。没有必要存储完整的表达式树,一个字符串可能就可以了。

我想象了一个这样的方案:Criteria (expression_to_evaluate, value_to_return)

例如,假设我有一个匹配年龄在 20 到 40 岁之间的人的表达式:

(var >= 20 AND var <= 40)

var必须用相关人员的年龄替换,如果匹配,则应返回该行。如果不匹配,则应考虑下一行,评估该表达式,依此类推。

可以有更复杂的表达式,例如: ((var >= 20 AND var <= 40) OR (var < 10))

甚至可能有两个变量: ((var1 <= 10) AND (var2 >= 10 OR var1 == 20))

这应该在 SQL (SQL Server 2005/2008) 或 C# 中完成。匹配行的值应返回并在 C# 中进一步处理。

这甚至可能吗?

4

2 回答 2

1

EXECUTE| EXEC允许您首先构建一个 T-SQL 字符串,然后执行它。您可以执行逻辑以首先根据您的变量构建您的字符串,然后简单地构建EXEC它。

同样,您可以在 C# 中执行相同的操作,并使用ExecuteNonQuery()or执行 T-SQL ExecuteReader()

于 2010-08-24T09:31:05.853 回答
0

使用System.Linq.Dynamic的东西,它深深地隐藏在 Visual Studio 代码示例中,与普通的 linq-to-sql 一起使用。指定的属性名称映射到生成的实体类。

myContext.MyTable.Where("Property > 20 && Property < 40").ToList();
于 2010-09-08T19:43:25.750 回答