Linq 尝试执行WHERE IN:无效的“WHERE”条件。实体成员正在调用无效的属性或方法
我正在尝试获取一个案例列表,其AccountID在以前的列表中找到 错误发生在以下内容的最后一行:Linq 尝试执行WHERE IN:无效的“WHERE”条件。实体成员正在调用无效的属性或方法,linq,dynamics-crm-2011,Linq,Dynamics Crm 2011,我正在尝试获取一个案例列表,其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 li
// 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();
我不确定错误所说的无效属性是什么。代码已编译,我只是在运行时收到错误。问题在于。它不支持LINQtoObjects提供程序提供的所有可用选项。在这种情况下,CRM不支持Enumerable.Contains方法
其中:
子句的左侧必须是属性名和
子句的右侧必须是值。不能设置左侧
到一个常数。子句的两边不能都是常量。
支持字符串函数Contains、StartsWith、EndsWith和
平等
您可以通过以下两种方式之一解决此问题:
修改查询以使用更自然的联接。
如果无法进行联接,则可以使用动态Linq在CustomerID中的每个项上生成OR子句的列表。这与Enumerable.Contains的功能类似。
请参阅我的答案或问题的公认答案,了解两种不同的方法来完成此任务。问题是答案。它不支持LINQtoObjects提供程序提供的所有可用选项。在这种情况下,CRM不支持Enumerable.Contains方法
其中:
子句的左侧必须是属性名和
子句的右侧必须是值。不能设置左侧
到一个常数。子句的两边不能都是常量。
支持字符串函数Contains、StartsWith、EndsWith和
平等
您可以通过以下两种方式之一解决此问题:
修改查询以使用更自然的联接。
如果无法进行联接,则可以使用动态Linq在CustomerID中的每个项上生成OR子句的列表。这与Enumerable.Contains的功能类似。
请参阅我的答案或公认的问题答案,了解两种不同的方法来实现这一点。那是什么。。。从XrmContext.IncidentSet中的c开始,其中。。。打算做什么?获取AccountID出现在CustomerID中的案例列表,更新问题以澄清。那是什么。。。从XrmContext.IncidentSet中的c开始,其中。。。打算执行此操作?获取其AccountID出现在CustomerID中的案例列表,更新问题以澄清。尝试此操作时,我收到以下错误:Microsoft.Xrm.Sdk.dll中出现“System.ServiceModel.FaultException”“1”类型的异常,但未在用户代码中处理。其他信息:一般SQL错误。尝试此操作时,我收到以下错误:Microsoft.Xrm.Sdk.dll中出现类型为“System.ServiceModel.FaultException”“1”的异常,但未在用户代码中处理。附加信息:一般SQL错误。