CRM 2011 Linq和保存查询



是否可以使用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。

最新更新