我有一个数据源,例如 IDataSource : IEnumerable<IDynamicObject>
一个实现是查询纯 XML 数据,另一个是查询 SQL 数据库。
我的数据源没有具体类型,只针对简单的模式类型工作。
在某些情况下,这些数据源在相同的运行时上下文中实例化,而在其他情况下,它们通过网络访问。
我无法使用 LINQ 查询我的数据源,我计划使用动态对象来仅提取和解析作为实际查询一部分的成员值。
这在相同的运行时上下文中运行时工作正常,但是当数据源位于远程服务器上的 Web 服务后面时,这会失败,因为我无法以我所知道的任何方式将 LINQ 与 Web 服务一起使用。
所以我一直在寻找一种方法,将我的 LINQ 查询格式化为字符串并将其发送到服务器,然后将其解析回表达式并在新的上下文中执行它。
我能找到的两种解析表达式的方法是 Dynamic LINQ和 FLEE .我只简单地看过它们,但它们似乎都无法将表达式格式化为字符串并对其进行解析?
我已经阅读了有关 Roslyn 项目的信息,并在想也许它可以用于解决这个问题?有人知道更多吗?
我看过一些 IQueryable<TData>
也一样,但我读过很多关于它的负面信息,所以也许我应该避免使用它。而且它是强类型的,不符合我的需要,因为我不希望数据服务器上有任何具体类型。我也看不出这是如何在网络服务上使用的,是强类型的吗?我错过了什么吗?
最佳答案
Roslyn 最终将使您能够采用字符串形式的 LINQ 表达式,对其进行解析和计算。但是,当前公开的 CTP(2011 年 10 月发布的)不支持 LINQ 表达式。
关于c# - 将 LINQ 查询转换为字符串,发送到远程服务器以使用 Roslyn 解析为表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9647983/