2

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

「無効なプロパティ」がエラーの原因であるかどうかはわかりません。コードがコンパイルされ、実行時にエラーが発生します。

4

1 に答える 1

4

問題はCRM Linq Providerです。Linq-to-objects プロバイダーが提供する使用可能なすべてのオプションをサポートしているわけではありません。この場合、CRM はEnumerable.Contains()メソッドをサポートしていません。

where : 句の左側は属性名で、句の右側は値である必要があります。左辺を定数に設定することはできません。節の両側を定数にすることはできません。String関数ContainsStartsWithEndsWith、および Equalsをサポートします。

これは、次の 2 つの方法のいずれかで回避できます。

  1. クエリを修正して、より自然な結合を使用してください。
  2. 結合が不可能な場合は、Dynamic Linq を使用して のOR各項目の句のリストを生成できますcustomerIDs。これは と同様に機能しEnumerable.Containsます。

「今日のすべての誕生日を取得するにはどうすればよいですか?」という質問に対する私の回答または受け入れられた回答を参照してください。これを達成するための 2 つの方法があります。

于 2012-08-30T17:59:32.083 に答える