将 Linq 表达式转换为 QueryExpression 或 FetchXML
我的最终目标是将 linq 表达式转换为获取 xml。我打算在 MS CRM 2011 中将 fetch XML 用于自定义网格。
通过本文,我可以将 QueryExpression 转换为 FetchXML http://mileyja.blogspot.com/2011/07/convert-queryexpression-to-fetchxml.html
但我不知道如何将 Linq 表达式获取到 QueryExpression。当我说 linq 表达式时,我指的是 IQueryable<> 类型的对象。
有人有这方面的经验或知道如何做吗?
干杯
My ultimate goal is to convert a linq expression to fetch xml. I intend on using the fetch XML for custom grids in MS CRM 2011.
From this article, I can convert a QueryExpression to FetchXML http://mileyja.blogspot.com/2011/07/convert-queryexpression-to-fetchxml.html
But I don't know how to get a Linq expression to a QueryExpression. When I say a linq expression, I mean an object of type IQueryable<>.
Anyone had any experience with this or any know how?
Cheers
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
正如 Chielus 提到的,所提供的解决方案不适用于 CRM2013 SDK 程序集。
对于 CRM2013,您可以使用此扩展方法:
像这样使用它:
此处有更多详细信息:
https://social.msdn.microsoft.com/Forums/en-US/0026f1de-bc10-428d-ad15-18d34315c814/convert-linq-query-to-fetchxml-sdk-2013?forum=crm
The provided solution does not work for CRM2013 SDK assemblies as mentioned by Chielus.
For CRM2013 you can use this extension method:
Use it like so:
More details here:
https://social.msdn.microsoft.com/Forums/en-US/0026f1de-bc10-428d-ad15-18d34315c814/convert-linq-query-to-fetchxml-sdk-2013?forum=crm
您可以使用反射来获取
QueryExpression
,从IQuerable
获取提供程序并对其调用 Translate 方法。这是我正在使用的扩展方法:
如果您在 C# 中使用某种动态包装器进行反射,例如 ExposedObject 您可以这样做:
对于 fetch,您需要有
QueryExpression
,然后发出一个返回QueryExpressionToFetchXmlResponse
的请求QueryExpressionToFetchXmlRequest
响应,其具有属性FetchXml
。you can use reflection to get
QueryExpression
, fromIQuerable<T>
get the provider and call Translate method on it.here is extension method I'm using:
if you use some sort of dynamic wrapper for reflection in C# like ExposedObject you can just do smth like that:
as for fetch you need to have
QueryExpression
and then issue a requestQueryExpressionToFetchXmlRequest
that returnsQueryExpressionToFetchXmlResponse
response, which have propertyFetchXml
.对 LINQ 表达式调用 ToString() 应返回 FetchXML
calling ToString() on the LINQ expression should return the FetchXML