我正在尝试获取在上一个列表中找到AccountID的案例列表。
错误发生在以下的最后一行:
// Gets the list of permissions for the current contact
var perms = ServiceContext.GetCaseAccessByContact(Contact).Cast<Adx_caseaccess>();
// Get the list of account IDs from the permissions list
var customerIDs = perms.Select(p => p.adx_accountid).Distinct();
// Get the list of cases that belong to any account whose ID is in the `customerID` list
var openCases = (from c in ServiceContext.IncidentSet where customerIDs.Contains(c.AccountId) select c).ToList();
我不确定错误在谈论的是什么“无效属性”。代码编译,我只是在运行时得到错误。
答案 0 :(得分:3)
问题是CRM Linq Provider。它不支持Linq-to-objects提供程序提供的所有可用选项。在这种情况下,CRM不支持Enumerable.Contains()
方法。
<强>,其中强>: 子句的左侧必须是属性名称和 该条款的右侧必须是一个值。你不能设置左侧 一个常数。该子句的两个边都不能是常量。 支持字符串功能包含, StartsWith , EndsWith ,以及 <强>等于强>
您可以通过以下两种方式解决此问题:
OR
中的每个项目生成customerIDs
子句列表。这与Enumerable.Contains
类似。请参阅我的回答或问题"How to get all the birthdays of today?"的接受答案,了解两种不同的方法。