我想在数据库中存储一个布尔表达式,并对其进行评估。没有必要存储完整的表达式树,字符串可能会这样做。
我想象了一个这样的计划: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#中进一步处理。
这甚至可能吗?
答案 0 :(得分:1)
EXECUTE
| EXEC
允许您首先构建一个T-SQL字符串,然后执行它。您可以根据变量执行逻辑以首先构建字符串,然后只需EXEC
它。
同样,您可以在C#中执行相同操作,并使用ExecuteNonQuery()
或ExecuteReader()
执行T-SQL。
答案 1 :(得分:0)
使用隐藏在Visual Studio代码示例中的System.Linq.Dynamic内容以及普通的linq-to-sql。指定的属性名称将根据生成的实体类进行映射。
myContext.MyTable.Where("Property > 20 && Property < 40").ToList();