将简单表达式语言翻译成LINQ查询?

时间:2012-07-25 10:52:00

标签: c# entity-framework constraints

我想写一个简单的表达语言&用于小型数据库应用程序的LINQ to Entities转换程序。翻译者应该简单地将表达式翻译成linq查询,例如

[Project Participants] > 50 AND [Project Duration in Months] < 4

应转换为与

类似的LINQ查询
from p in projects where p.Participants.Count > 50 && p.Duration < 4 select p;

在运行时动态。

我的目标是将用户特定的约束存储在数据库中,并使用这些约束使用实体框架按需生成项目列表。做这种“翻译”的好习惯是什么?

非常感谢, 问候

1 个答案:

答案 0 :(得分:1)

我的建议是使用ScottGu的动态LINQ库,在这里找到:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

基本上,您可以将简单表达式语言解析为字符串,并使用一些YACC样式代码在运行时构建相应的LINQ查询部分。