gpt4 book ai didi

linq - 试图执行 WHERE IN : Invalid 'where' condition. 实体成员正在调用无效的属性或方法

转载 作者:行者123 更新时间:2023-12-04 18:13:17 24 4
gpt4 key购买 nike

我正在尝试获取在先前列表中找到其 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();

我不确定错误所说的“无效属性”是什么。代码编译,我只是在运行时得到错误。

最佳答案

问题是 CRM Linq Provider .它不支持 Linq-to-objects 提供程序提供的所有可用选项。在这种情况下,CRM 不支持 Enumerable.Contains()方法。

where: The left side of the clause must be an attribute name and the right side of the clause must be a value. You cannot set the left side to a constant. Both the sides of the clause cannot be constants. Supports the String functions Contains, StartsWith, EndsWith, and Equals.



您可以通过以下两种方式之一解决此问题:
  • 重新编写查询以使用更自然的联接。
  • 如果无法进行连接,您可以使用 Dynamic Linq 生成 OR 的列表customerIDs 中每个项目的子句.这将类似于 Enumerable.Contains .

  • 请参阅我的答案或对问题 "How to get all the birthdays of today?" 的接受答案有两种不同的方法来实现这一点。

    关于linq - 试图执行 WHERE IN : Invalid 'where' condition. 实体成员正在调用无效的属性或方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12200034/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com