0

是否可以将 CRM 2011 View (savedquery) 与 linq 一起使用?我的意思是我可以做这样的事情:

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>();
}
4

1 回答 1

1

它肯定不会。正如 Servy 建议的那样,尝试一下,你就会明白为什么。

SavedQuery有两个定义视图的属性—— FetchXml(底层查询)和LayoutXml(UI 中返回的列)。换句话说,它不会返回视图在 UI 中返回的数据,而是定义数据在 UI 中的返回方式。

枚举您期望从视图返回的记录的最简单的方法是FetchRequest直接使用 a。您必须将条件作为 XML 节点动态插入到FetchXml.

您还可以解析 XML 过滤器集,然后将其转换为适当的 Linq,但这显然更具挑战性,也许是不必要的。

第三种方法是在系统中创建一个静态视图,作为条件,您将客户设置为等于某个任意客户,然后在 XML 字符串中动态更改客户 ID。

于 2012-10-18T14:29:04.580 回答