是否可以使用LINQ使用CRM 2011 View(Savedquery)?我的意思是我可以做这样的事情:
IEnumerable<Opportunity> GetOpportunites(CrmOrganizationServiceContext context, string viewName, Guid customerId)
{
var view = context.CreateQuery<SavedQuery>().FirstOrDefault(q => q.Name == viewName);
if(view!=null)
return from Opportunity op in view
where op.CustomerId.Id == customerId
select op;
return new List<Opportunity>();
}
当然不会。如Servy所建议的,尝试一下,您会明白为什么。
SavedQuery
具有两个定义视图-FetchXml
(基础查询)和LayoutXml
(在UI中返回的列)的属性。换句话说,该视图在UI中返回 data ,而是返回UI中数据返回数据的定义。
通过您期望从视图返回的记录进行列举的最剪切方法是直接使用FetchRequest
。您必须在FetchXml
中动态插入状况。
您还可以解析XML滤波器集,然后将适用于Linq转换为LINQ,但这显然更具挑战性,也许是不必要的。
第三种方法是在系统中创建静态视图,作为将客户设置为与某些任意客户相等的条件,然后在XML字符串中动态更改客户ID。