我有一个数据源,例如IDataSource : IEnumerable<IDynamicObject>
一种实现是查询纯XML数据,另一种是查询SQL数据库。
我的数据源没有conrete类型,只针对简单的模式类型。
在某些情况下,这些数据源在同一运行时上下文中实例化,而其他数据源则通过网络访问。
我无法使用LINQ查询我的数据源,并且我计划使用动态对象来仅提取和解析属于实际查询的成员值。
当在相同的运行时上下文中运行时,这可以正常工作,但是当数据源位于远程服务器上的Web服务后面时,这会失败,因为我无法以任何我知道的方式使用LINQ和Web服务。 / p>
所以我一直在寻找一种将LINQ查询格式化为字符串并将其发送到服务器的方法,然后将其解析回表达式并在新的上下文中执行。
我能找到的两种解析表达式的方法是Dynamic LINQ和FLEE。我只是简单地看了一下它们,但似乎没有一个能够将表达式格式化为字符串并解析它?
我已经阅读了关于Roslyn项目的内容,并且想到它可能会用于此问题吗?有人知道更多吗?
我在IQueryable<TData>
看了一些,但我已经阅读了很多关于它的消极事情,所以也许我应该避免它。它也是强类型的,不符合我的需要,因为我不喜欢数据服务器上的任何具体类型。我也看不出如何在Web服务上使用它,强类型?我错过了什么吗?
答案 0 :(得分:4)
Roslyn最终会让你能够以字符串形式获取LINQ表达式,解析它并对其进行评估。但是,当前的公共CTP(2011年10月发布的版本)不支持LINQ表达式。
答案 1 :(得分:2)
这听起来更像你需要的是能够序列化表达式树,但不一定是C#字符串。
The Expression Tree Serialization sample on MSDN正是如此。它甚至包括一个示例WCF服务和cient,它使用IQueryable<T>
完全按照你想要的那样做。
答案 2 :(得分:0)