哪些工具可以帮助构建动态LINQ查询的表达式树?

时间:2015-07-17 07:56:46

标签: linq entity-framework linq-to-sql expression-trees

我的项目需要让用户构建自己的动态查询。从我所读到的,表达树是可行的方式。但是语法相当复杂。

我设想有一个GUI,用户可以在其中检查表,选择列,指定参数等,然后构建一个字符串,如:

            var myQuery =
                from P in context.Projects
                join UA in context.UserAttributes on P.ProjectID equals UA.ProjectID
                join UBA in context.UserBooleanAttributes on UA.UserAttributeID equals UBA.UserAttributeID
                join U in context.Users on UBA.UserID equals U.UserID
                where P.ProjectID == 1
                where UBA.Value == true
                where (UA.UserAttributeID == 1 || UA.UserAttributeID == 2)
                select new { uba = U };

并将其存储在查询表中。为了处理查询,我希望有一些库可以神奇地执行以下操作:

var result = magic(str);
foreach(var user in result)
   Foo(user.Email);

在这个例子中,我知道我的所有查询都会返回用户,但对于其他查询,我可能需要使用反射,或者在另一列中指定结果中的预期类型。

我发现了一个名为LinqTextQueryBuilder的项目看起来很有趣,但我想知道是否还有其他选择。

0 个答案:

没有答案